diff --git a/.devcontainer/docker-compose.yml b/.devcontainer/docker-compose.yml index 9d3bd639e1..aa549c0361 100644 --- a/.devcontainer/docker-compose.yml +++ b/.devcontainer/docker-compose.yml @@ -13,6 +13,12 @@ services: POSTGRES_USER: inventree_user POSTGRES_PASSWORD: inventree_password + redis: + image: redis:7.0 + restart: always + expose: + - 6379 + inventree: build: context: .. @@ -31,6 +37,8 @@ services: INVENTREE_DB_HOST: db INVENTREE_DB_USER: inventree_user INVENTREE_DB_PASSWORD: inventree_password + INVENTREE_CACHE_HOST: redis + INVENTREE_CACHE_PORT: 6379 INVENTREE_PLUGINS_ENABLED: True INVENTREE_SITE_URL: http://localhost:8000 INVENTREE_CORS_ORIGIN_ALLOW_ALL: True diff --git a/.github/actions/setup/action.yaml b/.github/actions/setup/action.yaml index 44ba540d33..41e5db55a9 100644 --- a/.github/actions/setup/action.yaml +++ b/.github/actions/setup/action.yaml @@ -49,9 +49,10 @@ runs: shell: bash run: | python3 -m pip install -U pip - pip3 install invoke wheel uv - - name: Set the VIRTUAL_ENV variable for uv to work - run: echo "VIRTUAL_ENV=${Python_ROOT_DIR}" >> $GITHUB_ENV + pip3 install -U invoke wheel + pip3 install 'uv<0.3.0' + - name: Allow uv to use the system Python by default + run: echo "UV_SYSTEM_PYTHON=1" >> $GITHUB_ENV shell: bash - name: Install Specific Python Dependencies if: ${{ inputs.pip-dependency }} @@ -82,7 +83,7 @@ runs: # Invoke commands - name: Install dev requirements - if: ${{ inputs.dev-install == 'true' ||inputs.install == 'true' }} + if: ${{ inputs.dev-install == 'true' || inputs.install == 'true' }} shell: bash run: uv pip install --require-hashes -r src/backend/requirements-dev.txt - name: Run invoke install diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 0a6bdd5b8f..8d14eeb906 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -15,26 +15,11 @@ updates: interval: weekly - package-ecosystem: pip - directory: /contrib/container - schedule: - interval: weekly - - - package-ecosystem: pip - directory: /docs - schedule: - interval: weekly - - - package-ecosystem: npm - directory: /src/backend - schedule: - interval: weekly - groups: - dependencies: - patterns: - - "*" # Include all dependencies - - - package-ecosystem: pip - directory: /src/backend + directories: + - /contrib/container + - /docs + - /.github + - /src/backend schedule: interval: weekly groups: @@ -43,7 +28,9 @@ updates: - "*" # Include all dependencies - package-ecosystem: npm - directory: /src/frontend + directories: + - /src/frontend + - /src/backend schedule: interval: weekly groups: diff --git a/.github/release.yml b/.github/release.yml index 65b45fc3da..182d1a747a 100644 --- a/.github/release.yml +++ b/.github/release.yml @@ -31,6 +31,9 @@ changelog: - setup - demo - CI + - title: Dependencies + labels: + - dependency - title: Other Changes labels: - "*" diff --git a/.github/requirements.in b/.github/requirements.in deleted file mode 100644 index 5d479962c1..0000000000 --- a/.github/requirements.in +++ /dev/null @@ -1,3 +0,0 @@ -# Packages needed for CI - requests==2.31.0 - pyyaml==6.0.1 diff --git a/.github/workflows/check_translations.yaml b/.github/workflows/check_translations.yaml index 9565f1a6d8..8ace00f569 100644 --- a/.github/workflows/check_translations.yaml +++ b/.github/workflows/check_translations.yaml @@ -30,7 +30,7 @@ jobs: steps: - name: Checkout Code - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # pin@v4.1.1 + uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # pin@v4.1.6 - name: Environment Setup uses: ./.github/actions/setup with: diff --git a/.github/workflows/docker.yaml b/.github/workflows/docker.yaml index 7c5b9d9384..df945dc432 100644 --- a/.github/workflows/docker.yaml +++ b/.github/workflows/docker.yaml @@ -39,19 +39,16 @@ jobs: docker: ${{ steps.filter.outputs.docker }} steps: - - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # pin@v4.1.1 + - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # pin@v4.1.6 - uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # pin@v3.0.2 id: filter with: filters: | docker: - .github/workflows/docker.yaml - - docker/** - - docker-compose.yml - - docker.dev.env - - Dockerfile - - InvenTree/settings.py - - requirements.txt + - contrib/container/** + - src/backend/InvenTree/InvenTree/settings.py + - src/backend/requirements.txt - tasks.py # Build the docker image @@ -69,14 +66,14 @@ jobs: steps: - name: Check out repo - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # pin@v4.1.1 + uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # pin@v4.1.6 - name: Set Up Python ${{ env.python_version }} uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d # pin@v5.1.0 with: python-version: ${{ env.python_version }} - name: Version Check run: | - pip install --require-hashes -r .github/requirements.txt + pip install --require-hashes -r contrib/dev_reqs/requirements.txt python3 .github/scripts/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 @@ -88,12 +85,17 @@ jobs: docker run --rm inventree-test invoke --list docker run --rm inventree-test gunicorn --version docker run --rm inventree-test pg_dump --version + docker run --rm inventree-test test -f /home/inventree/init.sh + docker run --rm inventree-test test -f /home/inventree/tasks.py + docker run --rm inventree-test test -f /home/inventree/gunicorn.conf.py + docker run --rm inventree-test test -f /home/inventree/src/backend/requirements.txt docker run --rm inventree-test test -f /home/inventree/src/backend/InvenTree/manage.py - name: Build Docker Image # Build the development docker image (using docker-compose.yml) run: docker compose --project-directory . -f contrib/container/dev-docker-compose.yml build --no-cache - name: Update Docker Image run: | + docker compose --project-directory . -f contrib/container/dev-docker-compose.yml run inventree-dev-server invoke install docker compose --project-directory . -f contrib/container/dev-docker-compose.yml run inventree-dev-server invoke update docker compose --project-directory . -f contrib/container/dev-docker-compose.yml run inventree-dev-server invoke setup-dev docker compose --project-directory . -f contrib/container/dev-docker-compose.yml up -d @@ -124,7 +126,7 @@ 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@2b51285047da1547ffb1b2203d8be4c0af6b1f20 # pin@v3.2.0 + uses: docker/setup-buildx-action@d70bba72b1f3fd22344832f00baa16ece964efeb # pin@v3.3.0 - name: Set up cosign if: github.event_name != 'pull_request' uses: sigstore/cosign-installer@59acb6260d9c0ba8f4a2f9d9b48431a222b68e20 # pin@v3.5.0 diff --git a/.github/workflows/qc_checks.yaml b/.github/workflows/qc_checks.yaml index 1b778950bb..e1ed0a7a0a 100644 --- a/.github/workflows/qc_checks.yaml +++ b/.github/workflows/qc_checks.yaml @@ -40,7 +40,7 @@ jobs: force: ${{ steps.force.outputs.force }} steps: - - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # pin@v4.1.1 + - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # pin@v4.1.6 - uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # pin@v3.0.2 id: filter with: @@ -72,7 +72,7 @@ jobs: needs: ["pre-commit"] steps: - - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # pin@v4.1.1 + - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # pin@v4.1.6 - name: Environment Setup uses: ./.github/actions/setup with: @@ -94,7 +94,7 @@ jobs: if: needs.paths-filter.outputs.server == 'true' || needs.paths-filter.outputs.frontend == 'true' || needs.paths-filter.outputs.force == 'true' steps: - - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # pin@v4.1.1 + - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # pin@v4.1.6 - name: Set up Python ${{ env.python_version }} uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d # pin@v5.1.0 with: @@ -104,7 +104,7 @@ jobs: uses: pre-commit/action@2c7b3805fd2a0fd8c1884dcaebf91fc102a13ecd # pin@v3.0.1 - name: Check Version run: | - pip install --require-hashes -r .github/requirements.txt + pip install --require-hashes -r contrib/dev_reqs/requirements.txt python3 .github/scripts/version_check.py mkdocs: @@ -115,15 +115,15 @@ jobs: steps: - name: Checkout Code - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # pin@v4.1.1 + uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # pin@v4.1.6 - name: Set up Python ${{ env.python_version }} uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d # pin@v5.1.0 with: python-version: ${{ env.python_version }} - name: Check Config run: | - pip install --require-hashes -r .github/requirements.txt - pip install -r docs/requirements.txt + pip install --require-hashes -r contrib/dev_reqs/requirements.txt + pip install --require-hashes -r docs/requirements.txt python docs/ci/check_mkdocs_config.py - name: Check Links uses: gaurav-nelson/github-action-markdown-link-check@5c5dfc0ac2e225883c0e5f03a85311ec2830d368 # v1 @@ -151,7 +151,7 @@ jobs: version: ${{ steps.version.outputs.version }} steps: - - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # pin@v4.1.1 + - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # pin@v4.1.6 - name: Environment Setup uses: ./.github/actions/setup with: @@ -161,14 +161,14 @@ jobs: - name: Export API Documentation run: invoke schema --ignore-warnings --filename src/backend/InvenTree/schema.yml - name: Upload schema - uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # pin@v4.3.1 + uses: actions/upload-artifact@65462800fd760344b1a7b4382951275a0abb4808 # pin@v4.3.3 with: name: schema.yml path: src/backend/InvenTree/schema.yml - name: Download public schema if: needs.paths-filter.outputs.api == 'false' run: | - pip install --require-hashes -r .github/requirements.txt >/dev/null 2>&1 + pip install --require-hashes -r contrib/dev_reqs/requirements.txt >/dev/null 2>&1 version="$(python3 .github/scripts/version_check.py only_version 2>&1)" echo "Version: $version" url="https://raw.githubusercontent.com/inventree/schema/main/export/${version}/api.yaml" @@ -187,7 +187,7 @@ jobs: id: version if: github.ref == 'refs/heads/master' && needs.paths-filter.outputs.api == 'true' run: | - pip install --require-hashes -r .github/requirements.txt >/dev/null 2>&1 + pip install --require-hashes -r contrib/dev_reqs/requirements.txt >/dev/null 2>&1 version="$(python3 .github/scripts/version_check.py only_version 2>&1)" echo "Version: $version" echo "version=$version" >> "$GITHUB_OUTPUT" @@ -201,12 +201,12 @@ jobs: version: ${{ needs.schema.outputs.version }} steps: - - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 with: repository: inventree/schema token: ${{ secrets.SCHEMA_PAT }} - name: Download schema artifact - uses: actions/download-artifact@c850b930e6ba138125429b7e5c93fc707a7f8427 # v4.1.4 + uses: actions/download-artifact@65a9edc5881444af0b9093a5e628f2fe47ea3b2e # v4.1.7 with: name: schema.yml - name: Move schema to correct location @@ -238,7 +238,7 @@ jobs: INVENTREE_SITE_URL: http://127.0.0.1:12345 steps: - - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # pin@v4.1.1 + - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # pin@v4.1.6 - name: Environment Setup uses: ./.github/actions/setup with: @@ -261,21 +261,25 @@ jobs: coverage run -m unittest discover -s test/ coverage: - name: Tests - DB [SQLite] + Coverage + name: Tests - DB [SQLite] + Coverage ${{ matrix.python_version }} runs-on: ubuntu-20.04 needs: ["pre-commit", "paths-filter"] if: needs.paths-filter.outputs.server == 'true' || needs.paths-filter.outputs.force == 'true' continue-on-error: true # continue if a step fails so that coverage gets pushed + strategy: + matrix: + python_version: [3.9, 3.12] env: INVENTREE_DB_NAME: ./inventree.sqlite INVENTREE_DB_ENGINE: sqlite3 INVENTREE_PLUGINS_ENABLED: true GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + python_version: ${{ matrix.python_version }} steps: - - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # pin@v4.1.1 + - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # pin@v4.1.6 - name: Environment Setup uses: ./.github/actions/setup with: @@ -291,7 +295,7 @@ jobs: - name: Coverage Tests run: invoke test --coverage - name: Upload coverage reports to Codecov - uses: codecov/codecov-action@84508663e988701840491b86de86b666e8a86bed # pin@v4.3.0 + uses: codecov/codecov-action@125fc84a9a348dbcf27191600683ec096ec9021c # pin@v4.4.1 if: always() with: token: ${{ secrets.CODECOV_TOKEN }} @@ -329,7 +333,7 @@ jobs: - 6379:6379 steps: - - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # pin@v4.1.1 + - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # pin@v4.1.6 - name: Environment Setup uses: ./.github/actions/setup with: @@ -373,7 +377,7 @@ jobs: - 3306:3306 steps: - - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # pin@v4.1.1 + - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # pin@v4.1.6 - name: Environment Setup uses: ./.github/actions/setup with: @@ -412,7 +416,7 @@ jobs: - 5432:5432 steps: - - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # pin@v4.1.1 + - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # pin@v4.1.6 - name: Environment Setup uses: ./.github/actions/setup with: @@ -423,7 +427,7 @@ jobs: - name: Run Tests run: invoke test --migrations --report --coverage - name: Upload coverage reports to Codecov - uses: codecov/codecov-action@84508663e988701840491b86de86b666e8a86bed # pin@v4.3.0 + uses: codecov/codecov-action@125fc84a9a348dbcf27191600683ec096ec9021c # pin@v4.4.1 if: always() with: token: ${{ secrets.CODECOV_TOKEN }} @@ -443,7 +447,7 @@ jobs: INVENTREE_PLUGINS_ENABLED: false steps: - - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # pin@v4.1.1 + - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # pin@v4.1.6 name: Checkout Code - name: Environment Setup uses: ./.github/actions/setup @@ -500,7 +504,7 @@ jobs: VITE_COVERAGE: true steps: - - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # pin@v4.1.1 + - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # pin@v4.1.6 - name: Environment Setup uses: ./.github/actions/setup with: @@ -518,7 +522,7 @@ jobs: - name: Run Playwright tests id: tests run: cd src/frontend && npx nyc playwright test - - uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # pin@v4 + - uses: actions/upload-artifact@65462800fd760344b1a7b4382951275a0abb4808 # pin@v4 if: ${{ !cancelled() && steps.tests.outcome == 'failure' }} with: name: playwright-report @@ -528,7 +532,7 @@ jobs: if: always() run: cd src/frontend && npx nyc report --report-dir ./coverage --temp-dir .nyc_output --reporter=lcov --exclude-after-remap false - name: Upload coverage reports to Codecov - uses: codecov/codecov-action@84508663e988701840491b86de86b666e8a86bed # pin@v4.3.0 + uses: codecov/codecov-action@125fc84a9a348dbcf27191600683ec096ec9021c # pin@v4.4.1 if: always() with: token: ${{ secrets.CODECOV_TOKEN }} @@ -541,7 +545,7 @@ jobs: timeout-minutes: 60 steps: - - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # pin@v4.1.1 + - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # pin@v4.1.6 - name: Environment Setup uses: ./.github/actions/setup with: @@ -554,7 +558,7 @@ jobs: run: | cd src/backend/InvenTree/web/static zip -r frontend-build.zip web/ web/.vite - - uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # pin@v4.3.1 + - uses: actions/upload-artifact@65462800fd760344b1a7b4382951275a0abb4808 # pin@v4.3.3 with: name: frontend-build path: src/backend/InvenTree/web/static/web diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index 1a74ca3d68..f93c99a1ec 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -5,20 +5,20 @@ on: release: types: [published] -permissions: - contents: read - jobs: stable: runs-on: ubuntu-latest + permissions: + contents: write + pull-requests: write env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} steps: - name: Checkout Code - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # pin@v4.1.1 + uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # pin@v4.1.6 - name: Version Check run: | - pip install --require-hashes -r .github/requirements.txt + pip install --require-hashes -r contrib/dev_reqs/requirements.txt python3 .github/scripts/version_check.py - name: Push to Stable Branch uses: ad-m/github-push-action@d91a481090679876dfc4178fef17f286781251df # pin@v0.8.0 @@ -30,8 +30,11 @@ jobs: publish-build: runs-on: ubuntu-latest + permissions: + contents: write + pull-requests: write steps: - - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # pin@v4.1.1 + - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # pin@v4.1.6 - name: Environment Setup uses: ./.github/actions/setup with: diff --git a/.github/workflows/scorecard.yaml b/.github/workflows/scorecard.yaml index 6db68c5d05..1fcff72b3d 100644 --- a/.github/workflows/scorecard.yaml +++ b/.github/workflows/scorecard.yaml @@ -32,12 +32,12 @@ jobs: steps: - name: "Checkout code" - uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 # v3.1.0 + uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 with: persist-credentials: false - name: "Run analysis" - uses: ossf/scorecard-action@0864cf19026789058feabb7e87baa5f140aac736 # v2.3.1 + uses: ossf/scorecard-action@dc50aa9510b46c811795eb24b2f1ba02a914e534 # v2.3.3 with: results_file: results.sarif results_format: sarif @@ -59,7 +59,7 @@ jobs: # 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 + uses: actions/upload-artifact@65462800fd760344b1a7b4382951275a0abb4808 # v4.3.3 with: name: SARIF file path: results.sarif @@ -67,6 +67,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@df5a14dc28094dc936e103b37d749c6628682b60 # v3.25.0 + uses: github/codeql-action/upload-sarif@9fdb3e49720b44c48891d036bb502feb25684276 # v3.25.6 with: sarif_file: results.sarif diff --git a/.github/workflows/translations.yaml b/.github/workflows/translations.yaml index c0438b60ea..fc2968e479 100644 --- a/.github/workflows/translations.yaml +++ b/.github/workflows/translations.yaml @@ -30,7 +30,7 @@ jobs: steps: - name: Checkout Code - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # pin@v4.1.1 + uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # pin@v4.1.6 - name: Environment Setup uses: ./.github/actions/setup with: diff --git a/.gitignore b/.gitignore index 8c119f2ab2..4bc362f653 100644 --- a/.gitignore +++ b/.gitignore @@ -108,5 +108,6 @@ src/backend/InvenTree/web/static InvenTree/web/static # Generated docs files +docs/schema.yml docs/docs/api/*.yml docs/docs/api/schema/*.yml diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 0f8057da83..6c99a6f6d5 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -39,8 +39,16 @@ repos: files: src/backend/requirements\.(in|txt)$ - id: pip-compile name: pip-compile requirements.txt - args: [.github/requirements.in, -o, .github/requirements.txt,--python-version=3.9, --no-strip-extras, --generate-hashes] - files: .github/requirements\.(in|txt)$ + args: [contrib/dev_reqs/requirements.in, -o, contrib/dev_reqs/requirements.txt,--python-version=3.9, --no-strip-extras, --generate-hashes] + files: contrib/dev_reqs/requirements\.(in|txt)$ + - id: pip-compile + name: pip-compile requirements.txt + args: [docs/requirements.in, -o, docs/requirements.txt,--python-version=3.9, --no-strip-extras, --generate-hashes] + files: docs/requirements\.(in|txt)$ + - id: pip-compile + name: pip-compile requirements.txt + args: [contrib/container/requirements.in, -o, contrib/container/requirements.txt,--python-version=3.11, --no-strip-extras, --generate-hashes] + files: contrib/container/requirements\.(in|txt)$ - repo: https://github.com/Riverside-Healthcare/djLint rev: v1.34.1 hooks: @@ -84,3 +92,7 @@ repos: # rev: 3.0.0 # hooks: # - id: shellcheck +- repo: https://github.com/isidentical/teyit + rev: 0.4.3 + hooks: + - id: teyit diff --git a/README.md b/README.md index 8c21973f35..f329c20758 100644 --- a/README.md +++ b/README.md @@ -123,7 +123,7 @@ Refer to the [getting started guide](https://docs.inventree.org/en/latest/start/ ## :iphone: Mobile App -InvenTree is supported by a [companion mobile app](https://docs.inventree.org/en/latest/app/app/) which allows users access to stock control information and functionality. +InvenTree is supported by a [companion mobile app](https://docs.inventree.org/app/) which allows users access to stock control information and functionality.
Board | {{ part.IPN }} |
Description | {{ part.description }} |
User | {{ user }} |
Date | {{ date }} |
Number of different components (codes) | {{ bom_items.count }} |
{% trans "IPN" %} | -{% trans "MPN" %} | -{% trans "Manufacturer" %} | -{% trans "Quantity" %} | -{% trans "Reference" %} | -{% trans "Substitute" %} | -
---|---|---|---|---|---|
{{ line.sub_part.IPN }} | -{{ line.sub_part.name }} | -- {% for manf in line.sub_part.manufacturer_parts.all %} - {{ manf.manufacturer.name }} - {% endfor %} - | -{% decimal line.quantity %} | -{{ line.reference }} | -
- {% for sub in line.substitutes.all %}
- {{ sub.part.IPN }} - {% endfor %} - |
-
Original IPN | -Allocated Part | -Location | -PCS | -|
---|---|---|---|---|
{{ line.bom_item.sub_part.IPN }} | - {% if line.stock_item.part.IPN != line.bom_item.sub_part.IPN %} -{{ line.stock_item.part.IPN }} | - {% else %} -{{ line.stock_item.part.IPN }} | - {% endif %} -{{ line.stock_item.location.pathstring }} | -{{ line.quantity }} | -
{% trans "Build Order" %} | -{% internal_link build.get_absolute_url build %} | -
---|---|
{% trans "Order" %} | -{{ reference }} | -
{% trans "Part" %} | -{% internal_link part.get_absolute_url part.IPN %} | -
{% trans "Quantity" %} | -{{ build.quantity }} | -
{% trans "Description" %} | -{{ build.title }} | -
{% trans "Issued" %} | -{% format_date build.creation_date %} | -
{% trans "Target Date" %} | -- {% if build.target_date %} - {% format_date build.target_date %} - {% else %} - Not specified - {% endif %} - | -
{% trans "Required For" %} | -{% internal_link build.parent.get_absolute_url build.parent %} | -
{% trans "Issued By" %} | -{{ build.issued_by }} | -
{% trans "Responsible" %} | -{{ build.responsible }} | -
{% trans "Sub builds count" %} | -{{ build.sub_build_count }} | -
{% trans "Sub Builds" %} | -{{ build.sub_builds }} | -
{% trans "Overdue" %} | -{{ build.is_overdue }} | -
{% trans "Can complete" %} | -{{ build.can_complete }} | -
Original IPN | -Reference | -Replace width IPN | -
---|---|---|
{{ line.sub_part.IPN }} | -{{ line.reference }} | -{{ line.substitutes.all.0.part.IPN }} | -
- Build Order: {{ build.reference }} - Build Qty: {% decimal build.quantity %} - |
- - - | -
- Part: {{ part.name }} - {% if part.IPN %} - IPN: {{ part.IPN }} - {% endif %} - Qty / Unit: {% decimal bom_item.quantity %} {% if part.units %}[{{ part.units }}]{% endif %} - Qty Total: {% decimal quantity %} {% if part.units %}[{{ part.units }}]{% endif %} - |
- - - | -
{{ item.part.full_name }} | -{{ item.quantity }} | -
{{ item.part.full_name }} | +{{ item.quantity }} | +
{{ sub_item.full_name }} | -Serial Number: {{ sub_item.serial }} | -Pass: {{ sub_item.passedAllRequiredTests }} | -
TEST LABEL{% endblock content %}' - ) - filestr.name = 'ExampleTemplate.html' - - response = self.post( - url, - data={ - 'name': 'New label', - 'description': 'A fancy new label created through API test', - 'label': filestr, - }, - format=None, - expected_code=201, - ) - - # Make sure the expected keys are in the response - self.assertIn('pk', response.data) - self.assertIn('name', response.data) - self.assertIn('description', response.data) - self.assertIn('label', response.data) - self.assertIn('filters', response.data) - self.assertIn('enabled', response.data) - - self.assertEqual(response.data['name'], 'New label') - self.assertEqual( - response.data['description'], 'A fancy new label created through API test' - ) - self.assertEqual(response.data['label'].count('ExampleTemplate'), 1) - - def test_detail_endpoint(self): - """Test that the DETAIL endpoint works for each label.""" - if not self.detail_url: - return - - # Create an item first - self.test_create_endpoint() - - labels = self.model.objects.all() - - n = len(labels) - - # Make sure at least one report defined - self.assertGreaterEqual(n, 1) - - # Check detail page for first report - response = self.get( - reverse(self.detail_url, kwargs={'pk': labels[0].pk}), expected_code=200 - ) - - # Make sure the expected keys are in the response - self.assertIn('pk', response.data) - self.assertIn('name', response.data) - self.assertIn('description', response.data) - self.assertIn('label', response.data) - self.assertIn('filters', response.data) - self.assertIn('enabled', response.data) - - filestr = StringIO( - '{% extends "label/label_base.html" %}{% block content %}
TEST LABEL{% endblock content %}' - ) - filestr.name = 'ExampleTemplate_Updated.html' - - # Check PATCH method - response = self.patch( - reverse(self.detail_url, kwargs={'pk': labels[0].pk}), - { - 'name': 'Changed name during test', - 'description': 'New version of the template', - 'label': filestr, - }, - format=None, - expected_code=200, - ) - - # Make sure the expected keys are in the response - self.assertIn('pk', response.data) - self.assertIn('name', response.data) - self.assertIn('description', response.data) - self.assertIn('label', response.data) - self.assertIn('filters', response.data) - self.assertIn('enabled', response.data) - - self.assertEqual(response.data['name'], 'Changed name during test') - self.assertEqual(response.data['description'], 'New version of the template') - - self.assertEqual(response.data['label'].count('ExampleTemplate_Updated'), 1) - - def test_delete(self): - """Test deleting, after other test are done.""" - if not self.detail_url: - return - - # Create an item first - self.test_create_endpoint() - - labels = self.model.objects.all() - n = len(labels) - # Make sure at least one label defined - self.assertGreaterEqual(n, 1) - - # Delete the last report - self.delete( - reverse(self.detail_url, kwargs={'pk': labels[n - 1].pk}), expected_code=204 - ) - - def test_print_label(self): - """Test printing a label.""" - if not self.print_url: - return - - # Create an item first - self.test_create_endpoint() - - labels = self.model.objects.all() - n = len(labels) - # Make sure at least one label defined - self.assertGreaterEqual(n, 1) - - url = reverse(self.print_url, kwargs={'pk': labels[0].pk}) - - # Try to print without providing a valid item - self.get(url, expected_code=400) - - # Try to print with an invalid item - self.get(url, {self.print_itemname: 9999}, expected_code=400) - - # Now print with a valid item - print(f'{self.print_itemmodel = }') - print(f'{self.print_itemmodel.objects.all() = }') - - item = self.print_itemmodel.objects.first() - self.assertIsNotNone(item) - - response = self.get(url, {self.print_itemname: item.pk}, expected_code=200) - - response_json = json.loads(response.content.decode('utf-8')) - - self.assertIn('file', response_json) - self.assertIn('success', response_json) - self.assertIn('message', response_json) - self.assertTrue(response_json['success']) - - def test_metadata_endpoint(self): - """Unit tests for the metadata field.""" - if not self.metadata_url: - return - - # Create an item first - self.test_create_endpoint() - - labels = self.model.objects.all() - n = len(labels) - # Make sure at least one label defined - self.assertGreaterEqual(n, 1) - - # Test getting metadata - response = self.get( - reverse(self.metadata_url, kwargs={'pk': labels[0].pk}), expected_code=200 - ) - - self.assertEqual(response.data, {'metadata': {}}) - - -class TestStockItemLabel(LabelTest): - """Unit testing class for the StockItemLabel model.""" - - model = label_models.StockItemLabel - - list_url = 'api-stockitem-label-list' - detail_url = 'api-stockitem-label-detail' - metadata_url = 'api-stockitem-label-metadata' - - print_url = 'api-stockitem-label-print' - print_itemname = 'item' - print_itemmodel = StockItem - - -class TestStockLocationLabel(LabelTest): - """Unit testing class for the StockLocationLabel model.""" - - model = label_models.StockLocationLabel - - list_url = 'api-stocklocation-label-list' - detail_url = 'api-stocklocation-label-detail' - metadata_url = 'api-stocklocation-label-metadata' - - print_url = 'api-stocklocation-label-print' - print_itemname = 'location' - print_itemmodel = StockLocation - - -class TestPartLabel(LabelTest): - """Unit testing class for the PartLabel model.""" - - model = label_models.PartLabel - - list_url = 'api-part-label-list' - detail_url = 'api-part-label-detail' - metadata_url = 'api-part-label-metadata' - - print_url = 'api-part-label-print' - print_itemname = 'part' - print_itemmodel = Part - - -class TestBuildLineLabel(LabelTest): - """Unit testing class for the BuildLine model.""" - - model = label_models.BuildLineLabel - - list_url = 'api-buildline-label-list' - detail_url = 'api-buildline-label-detail' - metadata_url = 'api-buildline-label-metadata' - - print_url = 'api-buildline-label-print' - print_itemname = 'line' - print_itemmodel = BuildLine diff --git a/src/backend/InvenTree/label/tests.py b/src/backend/InvenTree/label/tests.py deleted file mode 100644 index b4afce2216..0000000000 --- a/src/backend/InvenTree/label/tests.py +++ /dev/null @@ -1,166 +0,0 @@ -"""Tests for labels.""" - -import io -import json - -from django.apps import apps -from django.conf import settings -from django.core.exceptions import ValidationError -from django.core.files.base import ContentFile -from django.http import JsonResponse -from django.urls import reverse - -from common.models import InvenTreeSetting -from InvenTree.helpers import validateFilterString -from InvenTree.unit_test import InvenTreeAPITestCase -from label.models import LabelOutput -from part.models import Part -from plugin.registry import registry -from stock.models import StockItem - -from .models import PartLabel, StockItemLabel, StockLocationLabel - - -class LabelTest(InvenTreeAPITestCase): - """Unit test class for label models.""" - - fixtures = ['category', 'part', 'location', 'stock'] - - @classmethod - def setUpTestData(cls): - """Ensure that some label instances exist as part of init routine.""" - super().setUpTestData() - apps.get_app_config('label').create_defaults() - - def test_default_labels(self): - """Test that the default label templates are copied across.""" - labels = StockItemLabel.objects.all() - - self.assertTrue(labels.count() > 0) - - labels = StockLocationLabel.objects.all() - - self.assertTrue(labels.count() > 0) - - def test_default_files(self): - """Test that label files exist in the MEDIA directory.""" - - def test_subdir(ref_name): - item_dir = settings.MEDIA_ROOT.joinpath('label', 'inventree', ref_name) - self.assertTrue(len([item_dir.iterdir()]) > 0) - - test_subdir('stockitem') - test_subdir('stocklocation') - test_subdir('part') - - def test_filters(self): - """Test the label filters.""" - filter_string = 'part__pk=10' - - filters = validateFilterString(filter_string, model=StockItem) - - self.assertEqual(type(filters), dict) - - bad_filter_string = 'part_pk=10' - - with self.assertRaises(ValidationError): - validateFilterString(bad_filter_string, model=StockItem) - - def test_label_rendering(self): - """Test label rendering.""" - labels = PartLabel.objects.all() - part = Part.objects.first() - - for label in labels: - url = reverse('api-part-label-print', kwargs={'pk': label.pk}) - - # Check that label printing returns the correct response type - response = self.get(f'{url}?parts={part.pk}', expected_code=200) - self.assertIsInstance(response, JsonResponse) - data = json.loads(response.content) - - self.assertIn('message', data) - self.assertIn('file', data) - label_file = data['file'] - self.assertIn('/media/label/output/', label_file) - - def test_print_part_label(self): - """Actually 'print' a label, and ensure that the correct information is contained.""" - label_data = """ - {% load barcode %} - {% load report %} - - - - part: {{ part.pk }} - {{ part.name }} - - data: {{ qr_data|safe }} - - url: {{ qr_url|safe }} - - image: {% part_image part width=128 %} - - logo: {% logo_image %} - - """ - - buffer = io.StringIO() - buffer.write(label_data) - - template = ContentFile(buffer.getvalue(), 'label.html') - - # Construct a label template - label = PartLabel.objects.create( - name='test', description='Test label', enabled=True, label=template - ) - - # Ensure we are in "debug" mode (so the report is generated as HTML) - InvenTreeSetting.set_setting('REPORT_ENABLE', True, None) - - # Set the 'debug' setting for the plugin - plugin = registry.get_plugin('inventreelabel') - plugin.set_setting('DEBUG', True) - - # Print via the API (Note: will default to the builtin plugin if no plugin supplied) - url = reverse('api-part-label-print', kwargs={'pk': label.pk}) - - prt = Part.objects.first() - part_pk = prt.pk - part_name = prt.name - - response = self.get(f'{url}?parts={part_pk}', expected_code=200) - data = json.loads(response.content) - self.assertIn('file', data) - - # Find the generated file - output = LabelOutput.objects.last() - - # Open the file and read data - with open(output.label.path, 'r') as f: - content = f.read() - - # Test that each element has been rendered correctly - self.assertIn(f'part: {part_pk} - {part_name}', content) - self.assertIn(f'data: {{"part": {part_pk}}}', content) - if settings.ENABLE_CLASSIC_FRONTEND: - self.assertIn(f'http://testserver/part/{part_pk}/', content) - - # Check that a encoded image has been generated - self.assertIn('data:image/png;charset=utf-8;base64,', content) - - def test_metadata(self): - """Unit tests for the metadata field.""" - for model in [StockItemLabel, StockLocationLabel, PartLabel]: - p = model.objects.first() - - self.assertIsNone(p.get_metadata('test')) - self.assertEqual(p.get_metadata('test', backup_value=123), 123) - - # Test update via the set_metadata() method - p.set_metadata('test', 3) - self.assertEqual(p.get_metadata('test'), 3) - - for k in ['apple', 'banana', 'carrot', 'carrot', 'banana']: - p.set_metadata(k, k) - - self.assertEqual(len(p.metadata.keys()), 4) diff --git a/src/backend/InvenTree/locale/bg/LC_MESSAGES/django.po b/src/backend/InvenTree/locale/bg/LC_MESSAGES/django.po index 9cb1f78708..dc1a967554 100644 --- a/src/backend/InvenTree/locale/bg/LC_MESSAGES/django.po +++ b/src/backend/InvenTree/locale/bg/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-04-20 13:19+0000\n" -"PO-Revision-Date: 2024-04-21 04:19\n" +"POT-Creation-Date: 2024-05-31 07:08+0000\n" +"PO-Revision-Date: 2024-05-27 11:54\n" "Last-Translator: \n" "Language-Team: Bulgarian\n" "Language: bg_BG\n" @@ -17,11 +17,11 @@ msgstr "" "X-Crowdin-File: /[inventree.InvenTree] l10/src/backend/InvenTree/locale/en/LC_MESSAGES/django.po\n" "X-Crowdin-File-ID: 216\n" -#: InvenTree/api.py:255 +#: InvenTree/api.py:272 msgid "API endpoint not found" msgstr "Не е намерена крайна точка на API" -#: InvenTree/api.py:519 +#: InvenTree/api.py:536 msgid "User does not have permission to view this model" msgstr "Потребителя няма нужното разрешение, за да вижда този модел" @@ -56,26 +56,26 @@ msgstr "Подробности за грешката могат да се нам msgid "Enter date" msgstr "Въведи дата" -#: InvenTree/fields.py:208 InvenTree/models.py:1021 build/serializers.py:438 -#: build/serializers.py:516 build/templates/build/sidebar.html:21 -#: company/models.py:847 company/templates/company/sidebar.html:37 -#: order/models.py:1283 order/templates/order/po_sidebar.html:11 +#: InvenTree/fields.py:208 InvenTree/models.py:1035 build/serializers.py:453 +#: build/serializers.py:531 build/templates/build/sidebar.html:21 +#: company/models.py:849 company/templates/company/sidebar.html:37 +#: order/models.py:1332 order/templates/order/po_sidebar.html:11 #: order/templates/order/return_order_sidebar.html:9 #: order/templates/order/so_sidebar.html:17 part/admin.py:59 -#: part/models.py:3175 part/templates/part/part_sidebar.html:63 -#: report/templates/report/inventree_build_order_base.html:172 -#: stock/admin.py:226 stock/models.py:2332 stock/models.py:2449 -#: 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 +#: part/models.py:3218 part/templates/part/part_sidebar.html:63 +#: report/templates/report/inventree_build_order_report.html:172 +#: stock/admin.py:226 stock/models.py:2325 stock/models.py:2442 +#: stock/serializers.py:630 stock/serializers.py:788 stock/serializers.py:884 +#: stock/serializers.py:934 stock/serializers.py:1243 stock/serializers.py:1332 +#: stock/serializers.py:1497 stock/templates/stock/stock_sidebar.html:25 #: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1265 #: templates/js/translated/company.js:1684 templates/js/translated/order.js:347 #: templates/js/translated/part.js:1080 -#: templates/js/translated/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 +#: templates/js/translated/purchase_order.js:2200 +#: templates/js/translated/return_order.js:775 +#: templates/js/translated/sales_order.js:1103 +#: templates/js/translated/sales_order.js:2018 +#: templates/js/translated/stock.js:1536 templates/js/translated/stock.js:2428 msgid "Notes" msgstr "Бележки" @@ -132,7 +132,7 @@ msgstr "Въведеният домейн на електронната поща msgid "Registration is disabled." msgstr "Регистрацията е деактивирана." -#: InvenTree/helpers.py:525 order/models.py:541 order/models.py:743 +#: InvenTree/helpers.py:525 order/models.py:562 order/models.py:764 msgid "Invalid quantity provided" msgstr "Въведена е недопустима стойност" @@ -324,14 +324,18 @@ msgid "Turkish" msgstr "Турски" #: InvenTree/locales.py:48 +msgid "Ukrainian" +msgstr "" + +#: InvenTree/locales.py:49 msgid "Vietnamese" msgstr "Виетнамски" -#: InvenTree/locales.py:49 +#: InvenTree/locales.py:50 msgid "Chinese (Simplified)" msgstr "Китайски (опростен)" -#: InvenTree/locales.py:50 +#: InvenTree/locales.py:51 msgid "Chinese (Traditional)" msgstr "Китайски (традиционен)" @@ -351,145 +355,145 @@ msgstr "" msgid "Error running plugin validation" msgstr "" -#: InvenTree/models.py:162 +#: InvenTree/models.py:176 msgid "Metadata must be a python dict object" msgstr "" -#: InvenTree/models.py:168 +#: InvenTree/models.py:182 msgid "Plugin Metadata" msgstr "" -#: InvenTree/models.py:169 +#: InvenTree/models.py:183 msgid "JSON metadata field, for use by external plugins" msgstr "" -#: InvenTree/models.py:399 +#: InvenTree/models.py:413 msgid "Improperly formatted pattern" msgstr "" -#: InvenTree/models.py:406 +#: InvenTree/models.py:420 msgid "Unknown format key specified" msgstr "" -#: InvenTree/models.py:412 +#: InvenTree/models.py:426 msgid "Missing required format key" msgstr "" -#: InvenTree/models.py:423 +#: InvenTree/models.py:437 msgid "Reference field cannot be empty" msgstr "" -#: InvenTree/models.py:431 +#: InvenTree/models.py:445 msgid "Reference must match required pattern" msgstr "" -#: InvenTree/models.py:462 +#: InvenTree/models.py:476 msgid "Reference number is too large" msgstr "" -#: InvenTree/models.py:536 +#: InvenTree/models.py:550 msgid "Missing file" msgstr "" -#: InvenTree/models.py:537 +#: InvenTree/models.py:551 msgid "Missing external link" msgstr "" -#: InvenTree/models.py:558 stock/models.py:2444 +#: InvenTree/models.py:572 stock/models.py:2437 #: templates/js/translated/attachment.js:119 #: templates/js/translated/attachment.js:326 msgid "Attachment" msgstr "" -#: InvenTree/models.py:559 +#: InvenTree/models.py:573 msgid "Select file to attach" msgstr "" -#: InvenTree/models.py:567 common/models.py:3018 company/models.py:146 -#: company/models.py:457 company/models.py:514 company/models.py:830 -#: order/models.py:291 order/models.py:1288 order/models.py:1702 -#: part/admin.py:55 part/models.py:919 +#: InvenTree/models.py:581 common/models.py:3041 company/models.py:146 +#: company/models.py:457 company/models.py:514 company/models.py:831 +#: order/models.py:303 order/models.py:1337 order/models.py:1753 +#: part/admin.py:55 part/models.py:962 #: part/templates/part/part_scheduling.html:11 -#: report/templates/report/inventree_build_order_base.html:164 +#: report/templates/report/inventree_build_order_report.html:164 #: stock/admin.py:225 templates/js/translated/company.js:1319 #: templates/js/translated/company.js:1673 templates/js/translated/order.js:351 -#: templates/js/translated/part.js: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 +#: templates/js/translated/part.js:2455 +#: templates/js/translated/purchase_order.js:2040 +#: templates/js/translated/purchase_order.js:2204 +#: templates/js/translated/return_order.js:779 +#: templates/js/translated/sales_order.js:1092 +#: templates/js/translated/sales_order.js:2023 msgid "Link" msgstr "" -#: InvenTree/models.py:568 build/models.py:315 part/models.py:920 -#: stock/models.py:819 +#: InvenTree/models.py:582 build/models.py:345 part/models.py:963 +#: stock/models.py:836 msgid "Link to external URL" msgstr "" -#: InvenTree/models.py:574 templates/js/translated/attachment.js:120 +#: InvenTree/models.py:588 templates/js/translated/attachment.js:120 #: templates/js/translated/attachment.js:341 msgid "Comment" msgstr "" -#: InvenTree/models.py:575 +#: InvenTree/models.py:589 msgid "File comment" msgstr "" -#: InvenTree/models.py:583 InvenTree/models.py:584 common/models.py:2494 -#: common/models.py:2495 common/models.py:2719 common/models.py:2720 -#: common/models.py:2965 common/models.py:2966 part/models.py:3185 -#: part/models.py:3272 part/models.py:3365 part/models.py:3393 -#: plugin/models.py:250 plugin/models.py:251 -#: report/templates/report/inventree_test_report_base.html:105 +#: InvenTree/models.py:597 InvenTree/models.py:598 common/models.py:2517 +#: common/models.py:2518 common/models.py:2742 common/models.py:2743 +#: common/models.py:2988 common/models.py:2989 part/models.py:3228 +#: part/models.py:3315 part/models.py:3408 part/models.py:3436 +#: plugin/models.py:259 plugin/models.py:260 +#: report/templates/report/inventree_test_report.html:105 #: templates/js/translated/stock.js:3036 users/models.py:111 msgid "User" msgstr "Потребител" -#: InvenTree/models.py:588 +#: InvenTree/models.py:602 msgid "upload date" msgstr "" -#: InvenTree/models.py:610 +#: InvenTree/models.py:624 msgid "Filename must not be empty" msgstr "" -#: InvenTree/models.py:621 +#: InvenTree/models.py:635 msgid "Invalid attachment directory" msgstr "" -#: InvenTree/models.py:651 +#: InvenTree/models.py:665 #, python-brace-format msgid "Filename contains illegal character '{c}'" msgstr "" -#: InvenTree/models.py:654 +#: InvenTree/models.py:668 msgid "Filename missing extension" msgstr "" -#: InvenTree/models.py:663 +#: InvenTree/models.py:677 msgid "Attachment with this filename already exists" msgstr "" -#: InvenTree/models.py:670 +#: InvenTree/models.py:684 msgid "Error renaming file" msgstr "" -#: InvenTree/models.py:846 +#: InvenTree/models.py:860 msgid "Duplicate names cannot exist under the same parent" msgstr "" -#: InvenTree/models.py:863 +#: InvenTree/models.py:877 msgid "Invalid choice" msgstr "" -#: InvenTree/models.py:893 common/models.py:2706 common/models.py:3104 -#: common/serializers.py:370 company/models.py:613 label/models.py:120 -#: machine/models.py:24 part/models.py:855 part/models.py:3616 -#: plugin/models.py:41 report/models.py:176 stock/models.py:76 +#: InvenTree/models.py:907 common/models.py:2729 common/models.py:3127 +#: common/serializers.py:403 company/models.py:614 machine/models.py:24 +#: part/models.py:898 part/models.py:3659 plugin/models.py:50 +#: report/models.py:149 stock/models.py:72 #: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/notifications.html:17 -#: templates/InvenTree/settings/plugin.html:81 +#: templates/InvenTree/settings/plugin.html:83 #: templates/InvenTree/settings/plugin_settings.html:22 #: templates/InvenTree/settings/settings_staff_js.html:67 #: templates/InvenTree/settings/settings_staff_js.html:446 @@ -499,98 +503,98 @@ msgstr "" #: templates/js/translated/company.js:1165 #: templates/js/translated/company.js:1413 templates/js/translated/part.js:1186 #: templates/js/translated/part.js:1474 templates/js/translated/part.js:1610 -#: templates/js/translated/part.js:2749 templates/js/translated/stock.js:2716 +#: templates/js/translated/part.js:2748 templates/js/translated/stock.js:2716 msgid "Name" msgstr "" -#: InvenTree/models.py:899 build/models.py:188 +#: InvenTree/models.py:913 build/models.py:218 #: build/templates/build/detail.html:24 common/models.py:136 -#: company/models.py:522 company/models.py:838 +#: company/models.py:523 company/models.py:840 #: company/templates/company/company_base.html:77 #: company/templates/company/manufacturer_part.html:75 -#: company/templates/company/supplier_part.html:107 label/models.py:127 -#: order/models.py:277 order/models.py:1316 part/admin.py:303 part/admin.py:414 -#: part/models.py:878 part/models.py:3631 part/templates/part/category.html:82 +#: company/templates/company/supplier_part.html:107 order/models.py:289 +#: order/models.py:1365 part/admin.py:305 part/admin.py:416 part/models.py:921 +#: part/models.py:3674 part/templates/part/category.html:82 #: part/templates/part/part_base.html:170 -#: part/templates/part/part_scheduling.html:12 report/models.py:189 -#: report/models.py:655 report/models.py:729 -#: report/templates/report/inventree_build_order_base.html:117 -#: stock/admin.py:55 stock/models.py:82 stock/templates/stock/location.html:125 +#: part/templates/part/part_scheduling.html:12 report/models.py:155 +#: report/models.py:509 report/models.py:535 +#: report/templates/report/inventree_build_order_report.html:117 +#: stock/admin.py:55 stock/models.py:78 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:519 +#: templates/js/translated/build.js:2139 templates/js/translated/company.js:519 #: templates/js/translated/company.js:1330 #: templates/js/translated/company.js:1641 templates/js/translated/index.js:119 #: templates/js/translated/order.js:298 templates/js/translated/part.js:1238 #: templates/js/translated/part.js:1483 templates/js/translated/part.js:1621 -#: templates/js/translated/part.js:1958 templates/js/translated/part.js:2355 -#: templates/js/translated/part.js:2785 templates/js/translated/part.js:2896 +#: templates/js/translated/part.js:1958 templates/js/translated/part.js:2354 +#: templates/js/translated/part.js:2784 templates/js/translated/part.js:2895 #: templates/js/translated/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/purchase_order.js:1706 +#: templates/js/translated/purchase_order.js:1849 +#: templates/js/translated/purchase_order.js:2022 +#: templates/js/translated/return_order.js:313 +#: templates/js/translated/sales_order.js:838 +#: templates/js/translated/sales_order.js:1848 +#: templates/js/translated/stock.js:1515 templates/js/translated/stock.js:2058 #: templates/js/translated/stock.js:2748 templates/js/translated/stock.js:2831 msgid "Description" msgstr "" -#: InvenTree/models.py:900 stock/models.py:83 +#: InvenTree/models.py:914 stock/models.py:79 msgid "Description (optional)" msgstr "" -#: InvenTree/models.py:909 +#: InvenTree/models.py:923 msgid "parent" msgstr "родител" -#: InvenTree/models.py:915 templates/js/translated/part.js:2794 +#: InvenTree/models.py:929 templates/js/translated/part.js:2793 #: templates/js/translated/stock.js:2757 msgid "Path" msgstr "" -#: InvenTree/models.py:1021 +#: InvenTree/models.py:1035 msgid "Markdown notes (optional)" msgstr "" -#: InvenTree/models.py:1050 +#: InvenTree/models.py:1064 msgid "Barcode Data" msgstr "" -#: InvenTree/models.py:1051 +#: InvenTree/models.py:1065 msgid "Third party barcode data" msgstr "" -#: InvenTree/models.py:1057 +#: InvenTree/models.py:1071 msgid "Barcode Hash" msgstr "" -#: InvenTree/models.py:1058 +#: InvenTree/models.py:1072 msgid "Unique hash of barcode data" msgstr "" -#: InvenTree/models.py:1111 +#: InvenTree/models.py:1125 msgid "Existing barcode found" msgstr "" -#: InvenTree/models.py:1154 +#: InvenTree/models.py:1168 msgid "Server Error" msgstr "" -#: InvenTree/models.py:1155 +#: InvenTree/models.py:1169 msgid "An error has been logged by the server." msgstr "" -#: InvenTree/serializers.py:62 part/models.py:4169 +#: InvenTree/serializers.py:62 part/models.py:4212 msgid "Must be a valid number" msgstr "" #: InvenTree/serializers.py:99 company/models.py:183 -#: company/templates/company/company_base.html:112 part/models.py:2993 +#: company/templates/company/company_base.html:112 part/models.py:3036 #: templates/InvenTree/settings/settings_staff_js.html:44 #: templates/currency_data.html:5 msgid "Currency" @@ -682,7 +686,7 @@ msgstr "" msgid "Downloading images from remote URL is not enabled" msgstr "" -#: InvenTree/status.py:66 part/serializers.py:1161 +#: InvenTree/status.py:66 part/serializers.py:1178 msgid "Background worker check failed" msgstr "" @@ -694,202 +698,6 @@ msgstr "" 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:1564 -#: 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 "" @@ -938,45 +746,45 @@ msgstr "" msgid "About InvenTree" msgstr "" -#: build/api.py:238 +#: build/api.py:255 msgid "Build must be cancelled before it can be deleted" msgstr "" -#: build/api.py:282 part/models.py:4047 templates/js/translated/bom.js:997 -#: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2521 +#: build/api.py:299 part/models.py:4090 templates/js/translated/bom.js:997 +#: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2520 #: templates/js/translated/table_filters.js:190 #: templates/js/translated/table_filters.js:583 msgid "Consumable" msgstr "" -#: build/api.py:283 part/models.py:4041 part/templates/part/upload_bom.html:58 +#: build/api.py:300 part/models.py:4084 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/build.js:2529 #: templates/js/translated/table_filters.js:186 #: templates/js/translated/table_filters.js:215 #: templates/js/translated/table_filters.js:587 msgid "Optional" msgstr "" -#: build/api.py:284 templates/js/translated/table_filters.js:408 +#: build/api.py:301 templates/js/translated/table_filters.js:408 #: templates/js/translated/table_filters.js:579 msgid "Tracked" msgstr "" -#: build/api.py:286 part/admin.py:144 templates/js/translated/build.js:1741 -#: templates/js/translated/build.js:2630 -#: templates/js/translated/sales_order.js:1929 +#: build/api.py:303 part/admin.py:144 templates/js/translated/build.js:1744 +#: templates/js/translated/build.js:2629 +#: templates/js/translated/sales_order.js:1965 #: templates/js/translated/table_filters.js:571 msgid "Allocated" msgstr "" -#: build/api.py:294 company/models.py:902 company/serializers.py:383 +#: build/api.py:311 company/models.py:904 company/serializers.py:383 #: 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/bom.js:1162 templates/js/translated/build.js:2561 #: templates/js/translated/index.js:123 -#: templates/js/translated/model_renderers.js:228 +#: templates/js/translated/model_renderers.js:234 #: templates/js/translated/part.js:692 templates/js/translated/part.js:694 #: templates/js/translated/part.js:699 #: templates/js/translated/table_filters.js:340 @@ -984,16 +792,16 @@ msgstr "" msgid "Available" msgstr "" -#: build/models.py:74 build/templates/build/build_base.html:9 +#: build/models.py:83 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 +#: report/templates/report/inventree_build_order_report.html:105 +#: stock/serializers.py:83 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/models.py:84 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 @@ -1004,708 +812,751 @@ msgstr "" msgid "Build Orders" msgstr "" -#: build/models.py:116 +#: build/models.py:131 msgid "Invalid choice for parent build" msgstr "" -#: build/models.py:127 order/models.py:239 +#: build/models.py:142 order/models.py:240 msgid "Responsible user or group must be specified" msgstr "" -#: build/models.py:133 +#: build/models.py:148 msgid "Build order part cannot be changed" msgstr "" -#: build/models.py:179 +#: build/models.py:209 msgid "Build Order Reference" msgstr "" -#: build/models.py:180 order/models.py:442 order/models.py:898 -#: order/models.py:1276 order/models.py:1996 part/admin.py:417 -#: part/models.py:4062 part/templates/part/upload_bom.html:54 +#: build/models.py:210 order/models.py:463 order/models.py:928 +#: order/models.py:1325 order/models.py:2056 part/admin.py:419 +#: part/models.py:4105 part/templates/part/upload_bom.html:54 #: 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 +#: report/templates/report/inventree_purchase_order_report.html:28 +#: report/templates/report/inventree_return_order_report.html:26 +#: report/templates/report/inventree_sales_order_report.html:28 #: templates/js/translated/bom.js:770 templates/js/translated/bom.js:973 -#: templates/js/translated/build.js:2513 templates/js/translated/order.js:291 +#: templates/js/translated/build.js:2512 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 +#: templates/js/translated/purchase_order.js:2065 +#: templates/js/translated/return_order.js:728 +#: templates/js/translated/sales_order.js:1854 msgid "Reference" msgstr "" -#: build/models.py:191 +#: build/models.py:221 msgid "Brief description of the build (optional)" msgstr "" -#: build/models.py:199 build/templates/build/build_base.html:183 +#: build/models.py:229 build/templates/build/build_base.html:183 #: build/templates/build/detail.html:87 msgid "Parent Build" msgstr "" -#: build/models.py:200 +#: build/models.py:230 msgid "BuildOrder to which this build is allocated" msgstr "" -#: build/models.py:205 build/templates/build/build_base.html:97 -#: build/templates/build/detail.html:29 company/models.py:1056 order/api.py:817 -#: order/models.py:1401 order/models.py:1544 order/models.py:1545 -#: part/api.py:1547 part/api.py:1841 part/models.py:390 part/models.py:3004 -#: part/models.py:3148 part/models.py:3292 part/models.py:3315 -#: part/models.py:3336 part/models.py:3358 part/models.py:3468 -#: part/models.py:3764 part/models.py:3920 part/models.py:4013 -#: part/models.py:4374 part/serializers.py:1107 part/serializers.py:1713 +#: build/models.py:235 build/templates/build/build_base.html:97 +#: build/templates/build/detail.html:29 company/models.py:1058 order/api.py:821 +#: order/models.py:1450 order/models.py:1595 order/models.py:1596 +#: part/api.py:1501 part/api.py:1795 part/models.py:392 part/models.py:3047 +#: part/models.py:3191 part/models.py:3335 part/models.py:3358 +#: part/models.py:3379 part/models.py:3401 part/models.py:3511 +#: part/models.py:3807 part/models.py:3963 part/models.py:4056 +#: part/models.py:4417 part/serializers.py:1124 part/serializers.py:1730 #: 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 +#: report/templates/report/inventree_build_order_report.html:109 +#: report/templates/report/inventree_purchase_order_report.html:27 +#: report/templates/report/inventree_return_order_report.html:24 +#: report/templates/report/inventree_sales_order_report.html:27 +#: report/templates/report/inventree_stock_location_report.html:102 +#: stock/serializers.py:110 stock/serializers.py:158 stock/serializers.py:396 +#: stock/serializers.py:818 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/build.js:1312 templates/js/translated/build.js:1743 +#: templates/js/translated/build.js:2162 templates/js/translated/build.js:2335 #: templates/js/translated/company.js:348 #: templates/js/translated/company.js:1116 #: templates/js/translated/company.js:1271 #: templates/js/translated/company.js:1559 templates/js/translated/index.js:109 #: templates/js/translated/part.js:1943 templates/js/translated/part.js:2015 -#: templates/js/translated/part.js:2324 templates/js/translated/pricing.js:369 +#: templates/js/translated/part.js:2323 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/purchase_order.js:1848 +#: templates/js/translated/purchase_order.js:2007 +#: templates/js/translated/return_order.js:538 +#: templates/js/translated/return_order.js:709 #: templates/js/translated/sales_order.js:300 -#: templates/js/translated/sales_order.js:1197 -#: templates/js/translated/sales_order.js:1598 -#: templates/js/translated/sales_order.js:1796 +#: templates/js/translated/sales_order.js:1233 +#: templates/js/translated/sales_order.js:1634 +#: templates/js/translated/sales_order.js:1832 #: templates/js/translated/stock.js:676 templates/js/translated/stock.js:842 -#: templates/js/translated/stock.js:1058 templates/js/translated/stock.js:1996 +#: templates/js/translated/stock.js:1058 templates/js/translated/stock.js:1997 #: templates/js/translated/stock.js:2857 templates/js/translated/stock.js:3090 #: templates/js/translated/stock.js:3236 msgid "Part" msgstr "Част" -#: build/models.py:213 +#: build/models.py:243 msgid "Select part to build" msgstr "" -#: build/models.py:218 +#: build/models.py:248 msgid "Sales Order Reference" msgstr "" -#: build/models.py:222 +#: build/models.py:252 msgid "SalesOrder to which this build is allocated" msgstr "" -#: build/models.py:227 build/serializers.py:964 -#: templates/js/translated/build.js:1728 -#: templates/js/translated/sales_order.js:1185 +#: build/models.py:257 build/serializers.py:1000 +#: templates/js/translated/build.js:1731 +#: templates/js/translated/sales_order.js:1221 msgid "Source Location" msgstr "" -#: build/models.py:231 +#: build/models.py:261 msgid "Select location to take stock from for this build (leave blank to take from any stock location)" msgstr "" -#: build/models.py:236 +#: build/models.py:266 msgid "Destination Location" msgstr "" -#: build/models.py:240 +#: build/models.py:270 msgid "Select location where the completed items will be stored" msgstr "" -#: build/models.py:244 +#: build/models.py:274 msgid "Build Quantity" msgstr "" -#: build/models.py:247 +#: build/models.py:277 msgid "Number of stock items to build" msgstr "" -#: build/models.py:251 +#: build/models.py:281 msgid "Completed items" msgstr "" -#: build/models.py:253 +#: build/models.py:283 msgid "Number of stock items which have been completed" msgstr "" -#: build/models.py:257 +#: build/models.py:287 msgid "Build Status" msgstr "" -#: build/models.py:261 +#: build/models.py:291 msgid "Build status code" msgstr "" -#: build/models.py:270 build/serializers.py:280 order/serializers.py:577 -#: stock/models.py:823 stock/serializers.py:1333 +#: build/models.py:300 build/serializers.py:287 order/serializers.py:581 +#: stock/models.py:840 stock/serializers.py:75 stock/serializers.py:1462 #: templates/js/translated/purchase_order.js:1129 msgid "Batch Code" msgstr "" -#: build/models.py:274 build/serializers.py:281 +#: build/models.py:304 build/serializers.py:288 msgid "Batch code for this build output" msgstr "" -#: build/models.py:277 order/models.py:304 part/models.py:1079 -#: part/templates/part/part_base.html:310 -#: templates/js/translated/return_order.js:339 -#: templates/js/translated/sales_order.js:827 +#: build/models.py:307 order/models.py:316 order/serializers.py:120 +#: part/models.py:1122 part/templates/part/part_base.html:310 +#: templates/js/translated/return_order.js:338 +#: templates/js/translated/sales_order.js:863 msgid "Creation Date" msgstr "" -#: build/models.py:281 +#: build/models.py:311 msgid "Target completion date" msgstr "" -#: build/models.py:282 +#: build/models.py:312 msgid "Target date for build completion. Build will be overdue after this date." msgstr "" -#: build/models.py:285 order/models.py:500 order/models.py:2041 -#: templates/js/translated/build.js:2245 +#: build/models.py:315 order/models.py:521 order/models.py:2101 +#: templates/js/translated/build.js:2247 msgid "Completion Date" msgstr "" -#: build/models.py:291 +#: build/models.py:321 msgid "completed by" msgstr "" -#: build/models.py:299 templates/js/translated/build.js:2205 +#: build/models.py:329 templates/js/translated/build.js:2207 msgid "Issued by" msgstr "" -#: build/models.py:300 +#: build/models.py:330 msgid "User who issued this build order" msgstr "" -#: build/models.py:308 build/templates/build/build_base.html:204 +#: build/models.py:338 build/templates/build/build_base.html:204 #: build/templates/build/detail.html:122 common/models.py:145 -#: order/models.py:322 order/templates/order/order_base.html:217 +#: order/models.py:334 order/templates/order/order_base.html:217 #: order/templates/order/return_order_base.html:188 -#: order/templates/order/sales_order_base.html:228 part/models.py:1096 +#: order/templates/order/sales_order_base.html:232 part/models.py:1139 #: part/templates/part/part_base.html:390 -#: report/templates/report/inventree_build_order_base.html:158 +#: report/templates/report/inventree_build_order_report.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/build.js:2219 +#: templates/js/translated/purchase_order.js:1763 +#: templates/js/translated/return_order.js:358 #: templates/js/translated/table_filters.js:531 msgid "Responsible" msgstr "" -#: build/models.py:309 +#: build/models.py:339 msgid "User or group responsible for this build order" msgstr "" -#: build/models.py:314 build/templates/build/detail.html:108 +#: build/models.py:344 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:819 +#: order/templates/order/sales_order_base.html:184 +#: part/templates/part/part_base.html:383 stock/models.py:836 #: stock/templates/stock/item_base.html:200 #: templates/js/translated/company.js:1019 msgid "External Link" msgstr "" -#: build/models.py:319 +#: build/models.py:349 msgid "Build Priority" msgstr "" -#: build/models.py:322 +#: build/models.py:352 msgid "Priority of this build order" msgstr "" -#: build/models.py:329 common/models.py:129 order/admin.py:18 -#: order/models.py:286 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 +#: build/models.py:359 common/models.py:129 order/admin.py:18 +#: order/models.py:298 templates/InvenTree/settings/settings_staff_js.html:146 +#: templates/js/translated/build.js:2144 +#: templates/js/translated/purchase_order.js:1710 +#: templates/js/translated/return_order.js:317 +#: templates/js/translated/sales_order.js:842 #: templates/js/translated/table_filters.js:48 #: templates/project_code_data.html:6 msgid "Project Code" msgstr "" -#: build/models.py:330 +#: build/models.py:360 msgid "Project code for this build order" msgstr "" -#: build/models.py:581 +#: build/models.py:593 build/models.py:658 +msgid "Failed to offload task to complete build allocations" +msgstr "" + +#: build/models.py:615 #, python-brace-format msgid "Build order {build} has been completed" msgstr "" -#: build/models.py:587 +#: build/models.py:621 msgid "A build order has been completed" msgstr "" -#: build/models.py:805 build/models.py:880 +#: build/models.py:847 build/models.py:932 msgid "No build output specified" msgstr "" -#: build/models.py:808 +#: build/models.py:850 msgid "Build output is already completed" msgstr "" -#: build/models.py:811 +#: build/models.py:853 msgid "Build output does not match Build Order" msgstr "" -#: build/models.py:884 build/serializers.py:223 build/serializers.py:262 -#: build/serializers.py:831 order/models.py:538 order/serializers.py:429 -#: order/serializers.py:572 part/serializers.py:1471 part/serializers.py:1871 -#: stock/models.py:662 stock/models.py:1474 stock/serializers.py:472 +#: build/models.py:936 build/serializers.py:220 build/serializers.py:269 +#: build/serializers.py:867 order/models.py:559 order/serializers.py:433 +#: order/serializers.py:576 part/serializers.py:1488 part/serializers.py:1888 +#: stock/models.py:679 stock/models.py:1499 stock/serializers.py:601 msgid "Quantity must be greater than zero" msgstr "" -#: build/models.py:889 build/serializers.py:228 +#: build/models.py:941 build/serializers.py:225 msgid "Quantity cannot be greater than the output quantity" msgstr "" -#: build/models.py:946 build/serializers.py:533 +#: build/models.py:1001 build/serializers.py:548 #, python-brace-format msgid "Build output {serial} has not passed all required tests" msgstr "" -#: build/models.py:1308 +#: build/models.py:1352 +msgid "Build Order Line Item" +msgstr "" + +#: build/models.py:1377 msgid "Build object" msgstr "" -#: build/models.py:1322 build/models.py:1578 build/serializers.py:210 -#: build/serializers.py:247 build/templates/build/build_base.html:102 -#: build/templates/build/detail.html:34 common/models.py:2516 -#: order/models.py:1259 order/models.py:1916 order/serializers.py:1335 -#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:416 -#: part/forms.py:48 part/models.py:3162 part/models.py:4035 +#: build/models.py:1391 build/models.py:1647 build/serializers.py:207 +#: build/serializers.py:254 build/templates/build/build_base.html:102 +#: build/templates/build/detail.html:34 common/models.py:2539 +#: order/models.py:1308 order/models.py:1967 order/serializers.py:1339 +#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:418 +#: part/forms.py:48 part/models.py:3205 part/models.py:4078 #: 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 +#: report/templates/report/inventree_build_order_report.html:113 +#: report/templates/report/inventree_purchase_order_report.html:29 +#: report/templates/report/inventree_sales_order_report.html:29 +#: report/templates/report/inventree_stock_location_report.html:104 +#: report/templates/report/inventree_test_report.html:90 +#: report/templates/report/inventree_test_report.html:170 stock/admin.py:160 +#: stock/serializers.py:126 stock/serializers.py:166 stock/serializers.py:592 #: 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/build.js:737 templates/js/translated/build.js:1369 +#: templates/js/translated/build.js:1746 templates/js/translated/build.js:2357 #: templates/js/translated/company.js:1818 -#: templates/js/translated/model_renderers.js:230 +#: templates/js/translated/model_renderers.js:236 #: templates/js/translated/order.js:304 templates/js/translated/part.js:961 -#: templates/js/translated/part.js:1811 templates/js/translated/part.js:3341 +#: templates/js/translated/part.js:1811 templates/js/translated/part.js:3340 #: 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/purchase_order.js:1852 +#: templates/js/translated/purchase_order.js:2071 #: 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/sales_order.js:1235 +#: templates/js/translated/sales_order.js:1554 +#: templates/js/translated/sales_order.js:1644 +#: templates/js/translated/sales_order.js:1734 +#: templates/js/translated/sales_order.js:1860 #: templates/js/translated/stock.js:564 templates/js/translated/stock.js:702 #: templates/js/translated/stock.js:873 templates/js/translated/stock.js:3021 #: templates/js/translated/stock.js:3104 msgid "Quantity" msgstr "" -#: build/models.py:1323 +#: build/models.py:1392 msgid "Required quantity for build order" msgstr "" -#: build/models.py:1403 +#: build/models.py:1472 msgid "Build item must specify a build output, as master part is marked as trackable" msgstr "" -#: build/models.py:1412 +#: build/models.py:1481 #, python-brace-format msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})" msgstr "" -#: build/models.py:1422 order/models.py:1867 +#: build/models.py:1491 order/models.py:1918 msgid "Stock item is over-allocated" msgstr "" -#: build/models.py:1428 order/models.py:1870 +#: build/models.py:1497 order/models.py:1921 msgid "Allocation quantity must be greater than zero" msgstr "" -#: build/models.py:1434 +#: build/models.py:1503 msgid "Quantity must be 1 for serialized stock" msgstr "" -#: build/models.py:1493 +#: build/models.py:1562 msgid "Selected stock item does not match BOM line" msgstr "" -#: build/models.py:1565 build/serializers.py:811 order/serializers.py:1179 -#: order/serializers.py:1200 stock/serializers.py:566 stock/serializers.py:1052 -#: stock/serializers.py:1164 stock/templates/stock/item_base.html:10 +#: build/models.py:1634 build/serializers.py:847 order/serializers.py:1183 +#: order/serializers.py:1204 stock/models.py:360 stock/serializers.py:92 +#: stock/serializers.py:695 stock/serializers.py:1181 stock/serializers.py:1293 +#: 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/build.js:1745 #: 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/sales_order.js:1234 +#: templates/js/translated/sales_order.js:1535 +#: templates/js/translated/sales_order.js:1540 +#: templates/js/translated/sales_order.js:1641 +#: templates/js/translated/sales_order.js:1728 #: templates/js/translated/stock.js:677 templates/js/translated/stock.js:843 #: templates/js/translated/stock.js:2977 msgid "Stock Item" msgstr "" -#: build/models.py:1566 +#: build/models.py:1635 msgid "Source stock item" msgstr "" -#: build/models.py:1579 +#: build/models.py:1648 msgid "Stock quantity to allocate to build" msgstr "" -#: build/models.py:1587 +#: build/models.py:1656 msgid "Install into" msgstr "" -#: build/models.py:1588 +#: build/models.py:1657 msgid "Destination stock item" msgstr "" -#: build/serializers.py:160 build/serializers.py:840 -#: templates/js/translated/build.js:1319 +#: build/serializers.py:157 build/serializers.py:876 +#: templates/js/translated/build.js:1322 msgid "Build Output" msgstr "" -#: build/serializers.py:172 +#: build/serializers.py:169 msgid "Build output does not match the parent build" msgstr "" -#: build/serializers.py:176 +#: build/serializers.py:173 msgid "Output part does not match BuildOrder part" msgstr "" -#: build/serializers.py:180 +#: build/serializers.py:177 msgid "This build output has already been completed" msgstr "" -#: build/serializers.py:191 +#: build/serializers.py:188 msgid "This build output is not fully allocated" msgstr "" -#: build/serializers.py:211 build/serializers.py:248 +#: build/serializers.py:208 build/serializers.py:255 msgid "Enter quantity for build output" msgstr "" -#: build/serializers.py:269 +#: build/serializers.py:276 msgid "Integer quantity required for trackable parts" msgstr "" -#: build/serializers.py:272 +#: build/serializers.py:279 msgid "Integer quantity required, as the bill of materials contains trackable parts" msgstr "" -#: build/serializers.py:287 order/serializers.py:585 order/serializers.py:1339 -#: stock/serializers.py:483 templates/js/translated/purchase_order.js:1153 +#: build/serializers.py:294 order/serializers.py:589 order/serializers.py:1343 +#: stock/serializers.py:612 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 +#: build/serializers.py:295 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:995 -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:561 -#: order/serializers.py:669 order/serializers.py:1675 part/serializers.py:1127 -#: 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 +#: build/serializers.py:300 build/serializers.py:441 build/serializers.py:513 +#: order/serializers.py:565 order/serializers.py:673 order/serializers.py:1679 +#: part/serializers.py:1144 stock/serializers.py:101 stock/serializers.py:623 +#: stock/serializers.py:783 stock/serializers.py:879 stock/serializers.py:1325 +#: stock/serializers.py:1581 stock/templates/stock/item_base.html:394 #: 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/barcode.js:795 templates/js/translated/build.js:1001 +#: templates/js/translated/build.js:2372 #: templates/js/translated/purchase_order.js:1178 #: templates/js/translated/purchase_order.js:1268 -#: templates/js/translated/sales_order.js: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/sales_order.js:1547 +#: templates/js/translated/sales_order.js:1655 +#: templates/js/translated/sales_order.js:1663 +#: templates/js/translated/sales_order.js:1742 #: templates/js/translated/stock.js:678 templates/js/translated/stock.js:844 -#: templates/js/translated/stock.js:1060 templates/js/translated/stock.js:2200 +#: templates/js/translated/stock.js:1060 templates/js/translated/stock.js:2201 #: templates/js/translated/stock.js:2871 msgid "Location" msgstr "" -#: build/serializers.py:427 +#: build/serializers.py:301 +msgid "Stock location for build output" +msgstr "" + +#: build/serializers.py:315 +msgid "Auto Allocate Serial Numbers" +msgstr "" + +#: build/serializers.py:316 +msgid "Automatically allocate required items with matching serial numbers" +msgstr "" + +#: build/serializers.py:331 +msgid "Serial numbers must be provided for trackable parts" +msgstr "" + +#: build/serializers.py:356 stock/api.py:1031 +msgid "The following serial numbers already exist or are invalid" +msgstr "" + +#: build/serializers.py:403 build/serializers.py:465 build/serializers.py:554 +msgid "A list of build outputs must be provided" +msgstr "" + +#: build/serializers.py:442 msgid "Stock location for scrapped outputs" msgstr "" -#: build/serializers.py:433 +#: build/serializers.py:448 msgid "Discard Allocations" msgstr "" -#: build/serializers.py:434 +#: build/serializers.py:449 msgid "Discard any stock allocations for scrapped outputs" msgstr "" -#: build/serializers.py:439 +#: build/serializers.py:454 msgid "Reason for scrapping build output(s)" msgstr "" -#: build/serializers.py:499 +#: build/serializers.py:514 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:922 -#: order/models.py:2020 order/serializers.py:593 stock/admin.py:165 -#: stock/serializers.py:801 stock/serializers.py:1340 +#: build/serializers.py:520 build/templates/build/build_base.html:151 +#: build/templates/build/detail.html:62 order/models.py:952 +#: order/models.py:2080 order/serializers.py:597 stock/admin.py:165 +#: stock/serializers.py:930 stock/serializers.py:1469 #: stock/templates/stock/item_base.html:427 -#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2189 +#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2191 #: templates/js/translated/purchase_order.js:1308 -#: templates/js/translated/purchase_order.js: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/purchase_order.js:1722 +#: templates/js/translated/return_order.js:330 +#: templates/js/translated/sales_order.js:855 +#: templates/js/translated/stock.js:2176 templates/js/translated/stock.js:2995 #: templates/js/translated/stock.js:3120 msgid "Status" msgstr "" -#: build/serializers.py:511 +#: build/serializers.py:526 msgid "Accept Incomplete Allocation" msgstr "" -#: build/serializers.py:512 +#: build/serializers.py:527 msgid "Complete outputs if stock has not been fully allocated" msgstr "" -#: build/serializers.py:592 -msgid "Remove Allocated Stock" +#: build/serializers.py:612 +msgid "Consume Allocated Stock" msgstr "" -#: build/serializers.py:593 -msgid "Subtract any stock which has already been allocated to this build" +#: build/serializers.py:613 +msgid "Consume any stock which has already been allocated to this build" msgstr "" -#: build/serializers.py:599 +#: build/serializers.py:619 msgid "Remove Incomplete Outputs" msgstr "" -#: build/serializers.py:600 +#: build/serializers.py:620 msgid "Delete any build outputs which have not been completed" msgstr "" -#: build/serializers.py:627 +#: build/serializers.py:647 msgid "Not permitted" msgstr "" -#: build/serializers.py:628 +#: build/serializers.py:648 msgid "Accept as consumed by this build order" msgstr "" -#: build/serializers.py:629 +#: build/serializers.py:649 msgid "Deallocate before completing this build order" msgstr "" -#: build/serializers.py:651 +#: build/serializers.py:679 msgid "Overallocated Stock" msgstr "" -#: build/serializers.py:653 +#: build/serializers.py:681 msgid "How do you want to handle extra stock items assigned to the build order" msgstr "" -#: build/serializers.py:663 +#: build/serializers.py:691 msgid "Some stock items have been overallocated" msgstr "" -#: build/serializers.py:668 +#: build/serializers.py:696 msgid "Accept Unallocated" msgstr "" -#: build/serializers.py:669 +#: build/serializers.py:697 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 +#: build/serializers.py:707 templates/js/translated/build.js:315 msgid "Required stock has not been fully allocated" msgstr "" -#: build/serializers.py:684 order/serializers.py:297 order/serializers.py:1242 +#: build/serializers.py:712 order/serializers.py:301 order/serializers.py:1246 msgid "Accept Incomplete" msgstr "" -#: build/serializers.py:685 +#: build/serializers.py:713 msgid "Accept that the required number of build outputs have not been completed" msgstr "" -#: build/serializers.py:695 templates/js/translated/build.js:319 +#: build/serializers.py:723 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 +#: build/serializers.py:732 templates/js/translated/build.js:303 msgid "Build order has incomplete outputs" msgstr "" -#: build/serializers.py:734 +#: build/serializers.py:770 msgid "Build Line" msgstr "" -#: build/serializers.py:744 +#: build/serializers.py:780 msgid "Build output" msgstr "" -#: build/serializers.py:752 +#: build/serializers.py:788 msgid "Build output must point to the same build" msgstr "" -#: build/serializers.py:788 +#: build/serializers.py:824 msgid "Build Line Item" msgstr "" -#: build/serializers.py:802 +#: build/serializers.py:838 msgid "bom_item.part must point to the same part as the build order" msgstr "" -#: build/serializers.py:817 stock/serializers.py:1065 +#: build/serializers.py:853 stock/serializers.py:1194 msgid "Item must be in stock" msgstr "" -#: build/serializers.py:865 order/serializers.py:1233 +#: build/serializers.py:901 order/serializers.py:1237 #, python-brace-format msgid "Available quantity ({q}) exceeded" msgstr "" -#: build/serializers.py:871 +#: build/serializers.py:907 msgid "Build output must be specified for allocation of tracked parts" msgstr "" -#: build/serializers.py:878 +#: build/serializers.py:914 msgid "Build output cannot be specified for allocation of untracked parts" msgstr "" -#: build/serializers.py:902 order/serializers.py:1485 +#: build/serializers.py:938 order/serializers.py:1489 msgid "Allocation items must be provided" msgstr "" -#: build/serializers.py:965 +#: build/serializers.py:1001 msgid "Stock location where parts are to be sourced (leave blank to take from any location)" msgstr "" -#: build/serializers.py:973 +#: build/serializers.py:1009 msgid "Exclude Location" msgstr "" -#: build/serializers.py:974 +#: build/serializers.py:1010 msgid "Exclude stock items from this selected location" msgstr "" -#: build/serializers.py:979 +#: build/serializers.py:1015 msgid "Interchangeable Stock" msgstr "" -#: build/serializers.py:980 +#: build/serializers.py:1016 msgid "Stock items in multiple locations can be used interchangeably" msgstr "" -#: build/serializers.py:985 +#: build/serializers.py:1021 msgid "Substitute Stock" msgstr "" -#: build/serializers.py:986 +#: build/serializers.py:1022 msgid "Allow allocation of substitute parts" msgstr "" -#: build/serializers.py:991 +#: build/serializers.py:1027 msgid "Optional Items" msgstr "" -#: build/serializers.py:992 +#: build/serializers.py:1028 msgid "Allocate optional BOM items to build order" msgstr "" -#: build/serializers.py:1097 part/models.py:3930 part/models.py:4366 -#: stock/api.py:758 +#: build/serializers.py:1050 +msgid "Failed to start auto-allocation task" +msgstr "" + +#: build/serializers.py:1140 part/models.py:3973 part/models.py:4409 +#: stock/api.py:794 msgid "BOM Item" msgstr "" -#: build/serializers.py:1106 templates/js/translated/index.js:130 +#: build/serializers.py:1149 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:817 part/serializers.py:1489 +#: build/serializers.py:1154 part/admin.py:132 part/bom.py:173 +#: part/serializers.py:832 part/serializers.py:1506 #: 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/build.js:2613 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:1491 -#: templates/js/translated/build.js:2618 +#: build/serializers.py:1159 part/serializers.py:1508 +#: templates/js/translated/build.js:2617 #: templates/js/translated/table_filters.js:360 msgid "In Production" msgstr "" -#: build/serializers.py:1121 part/bom.py:172 part/serializers.py:1514 +#: build/serializers.py:1164 part/bom.py:172 part/serializers.py:1531 #: part/templates/part/part_base.html:192 -#: templates/js/translated/sales_order.js:1893 +#: templates/js/translated/sales_order.js:1929 msgid "Available Stock" msgstr "" -#: build/tasks.py:172 +#: build/status_codes.py:11 generic/states/tests.py:17 order/status_codes.py:12 +#: order/status_codes.py:37 order/status_codes.py:64 order/status_codes.py:82 +#: templates/js/translated/table_filters.js:598 +msgid "Pending" +msgstr "" + +#: build/status_codes.py:12 +msgid "Production" +msgstr "" + +#: build/status_codes.py:13 order/status_codes.py:15 order/status_codes.py:45 +#: order/status_codes.py:70 +msgid "Cancelled" +msgstr "" + +#: build/status_codes.py:14 generic/states/tests.py:19 order/status_codes.py:14 +#: order/status_codes.py:44 order/status_codes.py:69 +#: order/templates/order/order_base.html:158 +#: order/templates/order/sales_order_base.html:165 report/models.py:443 +msgid "Complete" +msgstr "" + +#: build/tasks.py:184 msgid "Stock required for build order" msgstr "" -#: build/tasks.py:189 +#: build/tasks.py:201 msgid "Overdue Build Order" msgstr "" -#: build/tasks.py:194 +#: build/tasks.py:206 #, python-brace-format msgid "Build order {bo} is now overdue" msgstr "" @@ -1822,18 +1673,18 @@ 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:297 -#: order/models.py:1294 order/templates/order/order_base.html:186 +#: build/templates/build/detail.html:138 order/models.py:309 +#: order/models.py:1343 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 +#: order/templates/order/sales_order_base.html:196 +#: report/templates/report/inventree_build_order_report.html:125 +#: templates/js/translated/build.js:2239 templates/js/translated/part.js:1830 +#: templates/js/translated/purchase_order.js:1739 +#: templates/js/translated/purchase_order.js:2147 +#: templates/js/translated/return_order.js:346 +#: templates/js/translated/return_order.js:750 +#: templates/js/translated/sales_order.js:871 +#: templates/js/translated/sales_order.js:1903 msgid "Target Date" msgstr "" @@ -1846,7 +1697,7 @@ msgstr "" #: 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 +#: order/templates/order/sales_order_base.html:126 #: templates/js/translated/table_filters.js:98 #: templates/js/translated/table_filters.js:524 #: templates/js/translated/table_filters.js:626 @@ -1860,42 +1711,42 @@ msgid "Completed Outputs" msgstr "" #: build/templates/build/build_base.html:190 -#: build/templates/build/detail.html:101 order/api.py:1507 order/models.py:1536 -#: order/models.py:1650 order/models.py:1804 +#: build/templates/build/detail.html:101 order/api.py:1511 order/models.py:847 +#: order/models.py:1587 order/models.py:1701 order/models.py:1855 #: 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 +#: report/templates/report/inventree_build_order_report.html:135 +#: report/templates/report/inventree_sales_order_report.html:14 #: stock/templates/stock/item_base.html:369 #: templates/email/overdue_sales_order.html:15 #: templates/js/translated/pricing.js:929 -#: templates/js/translated/sales_order.js:769 -#: templates/js/translated/sales_order.js:992 +#: templates/js/translated/sales_order.js:805 +#: templates/js/translated/sales_order.js:1028 #: templates/js/translated/stock.js:2924 msgid "Sales Order" msgstr "" #: build/templates/build/build_base.html:197 #: build/templates/build/detail.html:115 -#: report/templates/report/inventree_build_order_base.html:152 +#: report/templates/report/inventree_build_order_report.html:152 #: templates/js/translated/table_filters.js:24 msgid "Issued By" msgstr "" #: build/templates/build/build_base.html:211 -#: build/templates/build/detail.html:94 templates/js/translated/build.js:2154 +#: build/templates/build/detail.html:94 templates/js/translated/build.js:2156 msgid "Priority" msgstr "" -#: build/templates/build/build_base.html:273 +#: build/templates/build/build_base.html:269 msgid "Delete Build Order" msgstr "" -#: build/templates/build/build_base.html:283 +#: build/templates/build/build_base.html:279 msgid "Build Order QR Code" msgstr "" -#: build/templates/build/build_base.html:295 +#: build/templates/build/build_base.html:291 msgid "Link Barcode to Build Order" msgstr "" @@ -1911,8 +1762,8 @@ msgstr "" msgid "Stock can be taken from any available location." msgstr "" -#: build/templates/build/detail.html:49 order/models.py:1430 -#: templates/js/translated/purchase_order.js:2190 +#: build/templates/build/detail.html:49 order/models.py:1479 +#: templates/js/translated/purchase_order.js:2189 msgid "Destination" msgstr "" @@ -1926,10 +1777,10 @@ 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/build.js:1380 +#: templates/js/translated/model_renderers.js:241 #: templates/js/translated/purchase_order.js:1274 -#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2189 +#: templates/js/translated/stock.js:1133 templates/js/translated/stock.js:2190 #: templates/js/translated/stock.js:3127 #: templates/js/translated/table_filters.js:313 #: templates/js/translated/table_filters.js:404 @@ -1939,8 +1790,8 @@ 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 +#: order/templates/order/sales_order_base.html:190 +#: templates/js/translated/build.js:2199 msgid "Created" msgstr "" @@ -1949,7 +1800,7 @@ msgid "No target date set" msgstr "" #: build/templates/build/detail.html:149 -#: order/templates/order/sales_order_base.html:202 +#: order/templates/order/sales_order_base.html:206 #: templates/js/translated/table_filters.js:689 msgid "Completed" msgstr "" @@ -2043,11 +1894,11 @@ msgstr "" msgid "Build Notes" msgstr "" -#: build/templates/build/detail.html:434 +#: build/templates/build/detail.html:435 msgid "Allocation Complete" msgstr "" -#: build/templates/build/detail.html:435 +#: build/templates/build/detail.html:436 msgid "All lines have been fully allocated" msgstr "" @@ -2125,1458 +1976,1483 @@ msgstr "" msgid "User or group responsible for this project" msgstr "" -#: common/models.py:765 +#: common/models.py:766 msgid "Settings key (must be unique - case insensitive)" msgstr "" -#: common/models.py:769 +#: common/models.py:770 msgid "Settings value" msgstr "" -#: common/models.py:821 +#: common/models.py:822 msgid "Chosen value is not a valid option" msgstr "" -#: common/models.py:837 +#: common/models.py:838 msgid "Value must be a boolean value" msgstr "" -#: common/models.py:845 +#: common/models.py:846 msgid "Value must be an integer value" msgstr "" -#: common/models.py:882 +#: common/models.py:883 msgid "Key string must be unique" msgstr "" -#: common/models.py:1114 +#: common/models.py:1115 msgid "No group" msgstr "" -#: common/models.py:1157 +#: common/models.py:1158 msgid "An empty domain is not allowed." msgstr "" -#: common/models.py:1159 +#: common/models.py:1160 #, python-brace-format msgid "Invalid domain name: {domain}" msgstr "" -#: common/models.py:1171 +#: common/models.py:1172 msgid "No plugin" msgstr "" -#: common/models.py:1259 +#: common/models.py:1260 msgid "Restart required" msgstr "" -#: common/models.py:1261 +#: common/models.py:1262 msgid "A setting has been changed which requires a server restart" msgstr "" -#: common/models.py:1268 +#: common/models.py:1269 msgid "Pending migrations" msgstr "" -#: common/models.py:1269 +#: common/models.py:1270 msgid "Number of pending database migrations" msgstr "" -#: common/models.py:1274 +#: common/models.py:1275 msgid "Server Instance Name" msgstr "" -#: common/models.py:1276 +#: common/models.py:1277 msgid "String descriptor for the server instance" msgstr "" -#: common/models.py:1280 +#: common/models.py:1281 msgid "Use instance name" msgstr "" -#: common/models.py:1281 +#: common/models.py:1282 msgid "Use the instance name in the title-bar" msgstr "" -#: common/models.py:1286 +#: common/models.py:1287 msgid "Restrict showing `about`" msgstr "" -#: common/models.py:1287 +#: common/models.py:1288 msgid "Show the `about` modal only to superusers" msgstr "" -#: common/models.py:1292 company/models.py:108 company/models.py:109 +#: common/models.py:1293 company/models.py:108 company/models.py:109 msgid "Company name" msgstr "" -#: common/models.py:1293 +#: common/models.py:1294 msgid "Internal company name" msgstr "" -#: common/models.py:1297 +#: common/models.py:1298 msgid "Base URL" msgstr "" -#: common/models.py:1298 +#: common/models.py:1299 msgid "Base URL for server instance" msgstr "" -#: common/models.py:1304 +#: common/models.py:1305 msgid "Default Currency" msgstr "" -#: common/models.py:1305 +#: common/models.py:1306 msgid "Select base currency for pricing calculations" msgstr "" -#: common/models.py:1311 +#: common/models.py:1312 msgid "Currency Update Interval" msgstr "" -#: common/models.py:1313 +#: common/models.py:1314 msgid "How often to update exchange rates (set to zero to disable)" msgstr "" -#: common/models.py:1316 common/models.py:1372 common/models.py:1385 -#: common/models.py:1393 common/models.py:1402 common/models.py:1411 -#: common/models.py:1613 common/models.py:1635 common/models.py:1750 -#: common/models.py:2053 +#: common/models.py:1317 common/models.py:1373 common/models.py:1386 +#: common/models.py:1394 common/models.py:1403 common/models.py:1412 +#: common/models.py:1620 common/models.py:1642 common/models.py:1757 +#: common/models.py:2076 msgid "days" msgstr "" -#: common/models.py:1320 +#: common/models.py:1321 msgid "Currency Update Plugin" msgstr "" -#: common/models.py:1321 +#: common/models.py:1322 msgid "Currency update plugin to use" msgstr "" -#: common/models.py:1326 +#: common/models.py:1327 msgid "Download from URL" msgstr "" -#: common/models.py:1328 +#: common/models.py:1329 msgid "Allow download of remote images and files from external URL" msgstr "" -#: common/models.py:1334 +#: common/models.py:1335 msgid "Download Size Limit" msgstr "" -#: common/models.py:1335 +#: common/models.py:1336 msgid "Maximum allowable download size for remote image" msgstr "" -#: common/models.py:1341 +#: common/models.py:1342 msgid "User-agent used to download from URL" msgstr "" -#: common/models.py:1343 +#: common/models.py:1344 msgid "Allow to override the user-agent used to download images and files from external URL (leave blank for the default)" msgstr "" -#: common/models.py:1348 +#: common/models.py:1349 msgid "Strict URL Validation" msgstr "" -#: common/models.py:1349 +#: common/models.py:1350 msgid "Require schema specification when validating URLs" msgstr "" -#: common/models.py:1354 +#: common/models.py:1355 msgid "Require confirm" msgstr "" -#: common/models.py:1355 +#: common/models.py:1356 msgid "Require explicit user confirmation for certain action." msgstr "" -#: common/models.py:1360 +#: common/models.py:1361 msgid "Tree Depth" msgstr "" -#: common/models.py:1362 +#: common/models.py:1363 msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed." msgstr "" -#: common/models.py:1368 +#: common/models.py:1369 msgid "Update Check Interval" msgstr "" -#: common/models.py:1369 +#: common/models.py:1370 msgid "How often to check for updates (set to zero to disable)" msgstr "" -#: common/models.py:1375 +#: common/models.py:1376 msgid "Automatic Backup" msgstr "" -#: common/models.py:1376 +#: common/models.py:1377 msgid "Enable automatic backup of database and media files" msgstr "" -#: common/models.py:1381 +#: common/models.py:1382 msgid "Auto Backup Interval" msgstr "" -#: common/models.py:1382 +#: common/models.py:1383 msgid "Specify number of days between automated backup events" msgstr "" -#: common/models.py:1388 +#: common/models.py:1389 msgid "Task Deletion Interval" msgstr "" -#: common/models.py:1390 +#: common/models.py:1391 msgid "Background task results will be deleted after specified number of days" msgstr "" -#: common/models.py:1397 +#: common/models.py:1398 msgid "Error Log Deletion Interval" msgstr "" -#: common/models.py:1399 +#: common/models.py:1400 msgid "Error logs will be deleted after specified number of days" msgstr "" -#: common/models.py:1406 +#: common/models.py:1407 msgid "Notification Deletion Interval" msgstr "" -#: common/models.py:1408 +#: common/models.py:1409 msgid "User notifications will be deleted after specified number of days" msgstr "" -#: common/models.py:1415 templates/InvenTree/settings/sidebar.html:31 +#: common/models.py:1416 templates/InvenTree/settings/sidebar.html:31 msgid "Barcode Support" msgstr "" -#: common/models.py:1416 +#: common/models.py:1417 msgid "Enable barcode scanner support in the web interface" msgstr "" -#: common/models.py:1421 +#: common/models.py:1422 msgid "Barcode Input Delay" msgstr "" -#: common/models.py:1422 +#: common/models.py:1423 msgid "Barcode input processing delay time" msgstr "" -#: common/models.py:1428 +#: common/models.py:1429 msgid "Barcode Webcam Support" msgstr "" -#: common/models.py:1429 +#: common/models.py:1430 msgid "Allow barcode scanning via webcam in browser" msgstr "" -#: common/models.py:1434 +#: common/models.py:1435 msgid "Part Revisions" msgstr "" -#: common/models.py:1435 +#: common/models.py:1436 msgid "Enable revision field for Part" msgstr "" -#: common/models.py:1440 +#: common/models.py:1441 +msgid "Allow Deletion from Assembly" +msgstr "" + +#: common/models.py:1442 +msgid "Allow deletion of parts which are used in an assembly" +msgstr "" + +#: common/models.py:1447 msgid "IPN Regex" msgstr "" -#: common/models.py:1441 +#: common/models.py:1448 msgid "Regular expression pattern for matching Part IPN" msgstr "" -#: common/models.py:1444 +#: common/models.py:1451 msgid "Allow Duplicate IPN" msgstr "" -#: common/models.py:1445 +#: common/models.py:1452 msgid "Allow multiple parts to share the same IPN" msgstr "" -#: common/models.py:1450 +#: common/models.py:1457 msgid "Allow Editing IPN" msgstr "" -#: common/models.py:1451 +#: common/models.py:1458 msgid "Allow changing the IPN value while editing a part" msgstr "" -#: common/models.py:1456 +#: common/models.py:1463 msgid "Copy Part BOM Data" msgstr "" -#: common/models.py:1457 +#: common/models.py:1464 msgid "Copy BOM data by default when duplicating a part" msgstr "" -#: common/models.py:1462 +#: common/models.py:1469 msgid "Copy Part Parameter Data" msgstr "" -#: common/models.py:1463 +#: common/models.py:1470 msgid "Copy parameter data by default when duplicating a part" msgstr "" -#: common/models.py:1468 +#: common/models.py:1475 msgid "Copy Part Test Data" msgstr "" -#: common/models.py:1469 +#: common/models.py:1476 msgid "Copy test data by default when duplicating a part" msgstr "" -#: common/models.py:1474 +#: common/models.py:1481 msgid "Copy Category Parameter Templates" msgstr "" -#: common/models.py:1475 +#: common/models.py:1482 msgid "Copy category parameter templates when creating a part" msgstr "" -#: common/models.py:1480 part/admin.py:108 part/models.py:3772 -#: report/models.py:182 stock/serializers.py:99 +#: common/models.py:1487 part/admin.py:108 part/models.py:3815 +#: report/models.py:293 report/models.py:360 report/serializers.py:90 +#: report/serializers.py:131 stock/serializers.py:228 #: templates/js/translated/table_filters.js:139 #: templates/js/translated/table_filters.js:767 msgid "Template" msgstr "" -#: common/models.py:1481 +#: common/models.py:1488 msgid "Parts are templates by default" msgstr "" -#: common/models.py:1486 part/admin.py:91 part/admin.py:431 part/models.py:1016 +#: common/models.py:1493 part/admin.py:91 part/admin.py:433 part/models.py:1059 #: 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:1487 +#: common/models.py:1494 msgid "Parts can be assembled from other components by default" msgstr "" -#: common/models.py:1492 part/admin.py:95 part/models.py:1022 +#: common/models.py:1499 part/admin.py:95 part/models.py:1065 #: templates/js/translated/table_filters.js:729 msgid "Component" msgstr "" -#: common/models.py:1493 +#: common/models.py:1500 msgid "Parts can be used as sub-components by default" msgstr "" -#: common/models.py:1498 part/admin.py:100 part/models.py:1034 +#: common/models.py:1505 part/admin.py:100 part/models.py:1077 msgid "Purchaseable" msgstr "" -#: common/models.py:1499 +#: common/models.py:1506 msgid "Parts are purchaseable by default" msgstr "" -#: common/models.py:1504 part/admin.py:104 part/models.py:1040 +#: common/models.py:1511 part/admin.py:104 part/models.py:1083 #: templates/js/translated/table_filters.js:755 msgid "Salable" msgstr "" -#: common/models.py:1505 +#: common/models.py:1512 msgid "Parts are salable by default" msgstr "" -#: common/models.py:1510 part/admin.py:113 part/models.py:1028 +#: common/models.py:1517 part/admin.py:113 part/models.py:1071 #: 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:1511 +#: common/models.py:1518 msgid "Parts are trackable by default" msgstr "" -#: common/models.py:1516 part/admin.py:117 part/models.py:1050 +#: common/models.py:1523 part/admin.py:117 part/models.py:1093 #: 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:1517 +#: common/models.py:1524 msgid "Parts are virtual by default" msgstr "" -#: common/models.py:1522 +#: common/models.py:1529 msgid "Show Import in Views" msgstr "" -#: common/models.py:1523 +#: common/models.py:1530 msgid "Display the import wizard in some part views" msgstr "" -#: common/models.py:1528 +#: common/models.py:1535 msgid "Show related parts" msgstr "" -#: common/models.py:1529 +#: common/models.py:1536 msgid "Display related parts for a part" msgstr "" -#: common/models.py:1534 +#: common/models.py:1541 msgid "Initial Stock Data" msgstr "" -#: common/models.py:1535 +#: common/models.py:1542 msgid "Allow creation of initial stock when adding a new part" msgstr "" -#: common/models.py:1540 templates/js/translated/part.js:107 +#: common/models.py:1547 templates/js/translated/part.js:107 msgid "Initial Supplier Data" msgstr "" -#: common/models.py:1542 +#: common/models.py:1549 msgid "Allow creation of initial supplier data when adding a new part" msgstr "" -#: common/models.py:1548 +#: common/models.py:1555 msgid "Part Name Display Format" msgstr "" -#: common/models.py:1549 +#: common/models.py:1556 msgid "Format to display the part name" msgstr "" -#: common/models.py:1555 +#: common/models.py:1562 msgid "Part Category Default Icon" msgstr "" -#: common/models.py:1556 +#: common/models.py:1563 msgid "Part category default icon (empty means no icon)" msgstr "" -#: common/models.py:1560 +#: common/models.py:1567 msgid "Enforce Parameter Units" msgstr "" -#: common/models.py:1562 +#: common/models.py:1569 msgid "If units are provided, parameter values must match the specified units" msgstr "" -#: common/models.py:1568 +#: common/models.py:1575 msgid "Minimum Pricing Decimal Places" msgstr "" -#: common/models.py:1570 +#: common/models.py:1577 msgid "Minimum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1576 +#: common/models.py:1583 msgid "Maximum Pricing Decimal Places" msgstr "" -#: common/models.py:1578 +#: common/models.py:1585 msgid "Maximum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1584 +#: common/models.py:1591 msgid "Use Supplier Pricing" msgstr "" -#: common/models.py:1586 +#: common/models.py:1593 msgid "Include supplier price breaks in overall pricing calculations" msgstr "" -#: common/models.py:1592 +#: common/models.py:1599 msgid "Purchase History Override" msgstr "" -#: common/models.py:1594 +#: common/models.py:1601 msgid "Historical purchase order pricing overrides supplier price breaks" msgstr "" -#: common/models.py:1600 +#: common/models.py:1607 msgid "Use Stock Item Pricing" msgstr "" -#: common/models.py:1602 +#: common/models.py:1609 msgid "Use pricing from manually entered stock data for pricing calculations" msgstr "" -#: common/models.py:1608 +#: common/models.py:1615 msgid "Stock Item Pricing Age" msgstr "" -#: common/models.py:1610 +#: common/models.py:1617 msgid "Exclude stock items older than this number of days from pricing calculations" msgstr "" -#: common/models.py:1617 +#: common/models.py:1624 msgid "Use Variant Pricing" msgstr "" -#: common/models.py:1618 +#: common/models.py:1625 msgid "Include variant pricing in overall pricing calculations" msgstr "" -#: common/models.py:1623 +#: common/models.py:1630 msgid "Active Variants Only" msgstr "" -#: common/models.py:1625 +#: common/models.py:1632 msgid "Only use active variant parts for calculating variant pricing" msgstr "" -#: common/models.py:1631 +#: common/models.py:1638 msgid "Pricing Rebuild Interval" msgstr "" -#: common/models.py:1633 +#: common/models.py:1640 msgid "Number of days before part pricing is automatically updated" msgstr "" -#: common/models.py:1640 +#: common/models.py:1647 msgid "Internal Prices" msgstr "" -#: common/models.py:1641 +#: common/models.py:1648 msgid "Enable internal prices for parts" msgstr "" -#: common/models.py:1646 +#: common/models.py:1653 msgid "Internal Price Override" msgstr "" -#: common/models.py:1648 +#: common/models.py:1655 msgid "If available, internal prices override price range calculations" msgstr "" -#: common/models.py:1654 +#: common/models.py:1661 msgid "Enable label printing" msgstr "" -#: common/models.py:1655 +#: common/models.py:1662 msgid "Enable label printing from the web interface" msgstr "" -#: common/models.py:1660 +#: common/models.py:1667 msgid "Label Image DPI" msgstr "" -#: common/models.py:1662 +#: common/models.py:1669 msgid "DPI resolution when generating image files to supply to label printing plugins" msgstr "" -#: common/models.py:1668 +#: common/models.py:1675 msgid "Enable Reports" msgstr "" -#: common/models.py:1669 +#: common/models.py:1676 msgid "Enable generation of reports" msgstr "" -#: common/models.py:1674 templates/stats.html:25 +#: common/models.py:1681 templates/stats.html:25 msgid "Debug Mode" msgstr "" -#: common/models.py:1675 +#: common/models.py:1682 msgid "Generate reports in debug mode (HTML output)" msgstr "" -#: common/models.py:1680 +#: common/models.py:1687 msgid "Log Report Errors" msgstr "" -#: common/models.py:1681 +#: common/models.py:1688 msgid "Log errors which occur when generating reports" msgstr "" -#: common/models.py:1686 plugin/builtin/labels/label_sheet.py:28 -#: report/models.py:203 +#: common/models.py:1693 plugin/builtin/labels/label_sheet.py:28 +#: report/models.py:301 msgid "Page Size" msgstr "" -#: common/models.py:1687 +#: common/models.py:1694 msgid "Default page size for PDF reports" msgstr "" -#: common/models.py:1692 +#: common/models.py:1699 msgid "Enable Test Reports" msgstr "" -#: common/models.py:1693 +#: common/models.py:1700 msgid "Enable generation of test reports" msgstr "" -#: common/models.py:1698 +#: common/models.py:1705 msgid "Attach Test Reports" msgstr "" -#: common/models.py:1700 +#: common/models.py:1707 msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item" msgstr "" -#: common/models.py:1706 +#: common/models.py:1713 msgid "Globally Unique Serials" msgstr "" -#: common/models.py:1707 +#: common/models.py:1714 msgid "Serial numbers for stock items must be globally unique" msgstr "" -#: common/models.py:1712 +#: common/models.py:1719 msgid "Autofill Serial Numbers" msgstr "" -#: common/models.py:1713 +#: common/models.py:1720 msgid "Autofill serial numbers in forms" msgstr "" -#: common/models.py:1718 +#: common/models.py:1725 msgid "Delete Depleted Stock" msgstr "" -#: common/models.py:1720 +#: common/models.py:1727 msgid "Determines default behavior when a stock item is depleted" msgstr "" -#: common/models.py:1726 +#: common/models.py:1733 msgid "Batch Code Template" msgstr "" -#: common/models.py:1728 +#: common/models.py:1735 msgid "Template for generating default batch codes for stock items" msgstr "" -#: common/models.py:1733 +#: common/models.py:1740 msgid "Stock Expiry" msgstr "" -#: common/models.py:1734 +#: common/models.py:1741 msgid "Enable stock expiry functionality" msgstr "" -#: common/models.py:1739 +#: common/models.py:1746 msgid "Sell Expired Stock" msgstr "" -#: common/models.py:1740 +#: common/models.py:1747 msgid "Allow sale of expired stock" msgstr "" -#: common/models.py:1745 +#: common/models.py:1752 msgid "Stock Stale Time" msgstr "" -#: common/models.py:1747 +#: common/models.py:1754 msgid "Number of days stock items are considered stale before expiring" msgstr "" -#: common/models.py:1754 +#: common/models.py:1761 msgid "Build Expired Stock" msgstr "" -#: common/models.py:1755 +#: common/models.py:1762 msgid "Allow building with expired stock" msgstr "" -#: common/models.py:1760 +#: common/models.py:1767 msgid "Stock Ownership Control" msgstr "" -#: common/models.py:1761 +#: common/models.py:1768 msgid "Enable ownership control over stock locations and items" msgstr "" -#: common/models.py:1766 +#: common/models.py:1773 msgid "Stock Location Default Icon" msgstr "" -#: common/models.py:1767 +#: common/models.py:1774 msgid "Stock location default icon (empty means no icon)" msgstr "" -#: common/models.py:1771 +#: common/models.py:1778 msgid "Show Installed Stock Items" msgstr "" -#: common/models.py:1772 +#: common/models.py:1779 msgid "Display installed stock items in stock tables" msgstr "" -#: common/models.py:1777 +#: common/models.py:1784 msgid "Check BOM when installing items" msgstr "" -#: common/models.py:1779 +#: common/models.py:1786 msgid "Installed stock items must exist in the BOM for the parent part" msgstr "" -#: common/models.py:1785 +#: common/models.py:1792 +msgid "Allow Out of Stock Transfer" +msgstr "" + +#: common/models.py:1794 +msgid "Allow stock items which are not in stock to be transferred between stock locations" +msgstr "" + +#: common/models.py:1800 msgid "Build Order Reference Pattern" msgstr "" -#: common/models.py:1787 +#: common/models.py:1802 msgid "Required pattern for generating Build Order reference field" msgstr "" -#: common/models.py:1793 common/models.py:1821 common/models.py:1843 -#: common/models.py:1871 +#: common/models.py:1808 common/models.py:1836 common/models.py:1858 +#: common/models.py:1894 msgid "Require Responsible Owner" msgstr "" -#: common/models.py:1794 common/models.py:1822 common/models.py:1844 -#: common/models.py:1872 +#: common/models.py:1809 common/models.py:1837 common/models.py:1859 +#: common/models.py:1895 msgid "A responsible owner must be assigned to each order" msgstr "" -#: common/models.py:1799 +#: common/models.py:1814 msgid "Block Until Tests Pass" msgstr "" -#: common/models.py:1801 +#: common/models.py:1816 msgid "Prevent build outputs from being completed until all required tests pass" msgstr "" -#: common/models.py:1807 +#: common/models.py:1822 msgid "Enable Return Orders" msgstr "" -#: common/models.py:1808 +#: common/models.py:1823 msgid "Enable return order functionality in the user interface" msgstr "" -#: common/models.py:1813 +#: common/models.py:1828 msgid "Return Order Reference Pattern" msgstr "" -#: common/models.py:1815 +#: common/models.py:1830 msgid "Required pattern for generating Return Order reference field" msgstr "" -#: common/models.py:1827 +#: common/models.py:1842 msgid "Edit Completed Return Orders" msgstr "" -#: common/models.py:1829 +#: common/models.py:1844 msgid "Allow editing of return orders after they have been completed" msgstr "" -#: common/models.py:1835 +#: common/models.py:1850 msgid "Sales Order Reference Pattern" msgstr "" -#: common/models.py:1837 +#: common/models.py:1852 msgid "Required pattern for generating Sales Order reference field" msgstr "" -#: common/models.py:1849 +#: common/models.py:1864 msgid "Sales Order Default Shipment" msgstr "" -#: common/models.py:1850 +#: common/models.py:1865 msgid "Enable creation of default shipment with sales orders" msgstr "" -#: common/models.py:1855 +#: common/models.py:1870 msgid "Edit Completed Sales Orders" msgstr "" -#: common/models.py:1857 +#: common/models.py:1872 msgid "Allow editing of sales orders after they have been shipped or completed" msgstr "" -#: common/models.py:1863 +#: common/models.py:1878 +msgid "Mark Shipped Orders as Complete" +msgstr "" + +#: common/models.py:1880 +msgid "Sales orders marked as shipped will automatically be completed, bypassing the \"shipped\" status" +msgstr "" + +#: common/models.py:1886 msgid "Purchase Order Reference Pattern" msgstr "" -#: common/models.py:1865 +#: common/models.py:1888 msgid "Required pattern for generating Purchase Order reference field" msgstr "" -#: common/models.py:1877 +#: common/models.py:1900 msgid "Edit Completed Purchase Orders" msgstr "" -#: common/models.py:1879 +#: common/models.py:1902 msgid "Allow editing of purchase orders after they have been shipped or completed" msgstr "" -#: common/models.py:1885 +#: common/models.py:1908 msgid "Auto Complete Purchase Orders" msgstr "" -#: common/models.py:1887 +#: common/models.py:1910 msgid "Automatically mark purchase orders as complete when all line items are received" msgstr "" -#: common/models.py:1894 +#: common/models.py:1917 msgid "Enable password forgot" msgstr "" -#: common/models.py:1895 +#: common/models.py:1918 msgid "Enable password forgot function on the login pages" msgstr "" -#: common/models.py:1900 +#: common/models.py:1923 msgid "Enable registration" msgstr "" -#: common/models.py:1901 +#: common/models.py:1924 msgid "Enable self-registration for users on the login pages" msgstr "" -#: common/models.py:1906 +#: common/models.py:1929 msgid "Enable SSO" msgstr "" -#: common/models.py:1907 +#: common/models.py:1930 msgid "Enable SSO on the login pages" msgstr "" -#: common/models.py:1912 +#: common/models.py:1935 msgid "Enable SSO registration" msgstr "" -#: common/models.py:1914 +#: common/models.py:1937 msgid "Enable self-registration via SSO for users on the login pages" msgstr "" -#: common/models.py:1920 +#: common/models.py:1943 msgid "Email required" msgstr "" -#: common/models.py:1921 +#: common/models.py:1944 msgid "Require user to supply mail on signup" msgstr "" -#: common/models.py:1926 +#: common/models.py:1949 msgid "Auto-fill SSO users" msgstr "" -#: common/models.py:1928 +#: common/models.py:1951 msgid "Automatically fill out user-details from SSO account-data" msgstr "" -#: common/models.py:1934 +#: common/models.py:1957 msgid "Mail twice" msgstr "" -#: common/models.py:1935 +#: common/models.py:1958 msgid "On signup ask users twice for their mail" msgstr "" -#: common/models.py:1940 +#: common/models.py:1963 msgid "Password twice" msgstr "" -#: common/models.py:1941 +#: common/models.py:1964 msgid "On signup ask users twice for their password" msgstr "" -#: common/models.py:1946 +#: common/models.py:1969 msgid "Allowed domains" msgstr "" -#: common/models.py:1948 +#: common/models.py:1971 msgid "Restrict signup to certain domains (comma-separated, starting with @)" msgstr "" -#: common/models.py:1954 +#: common/models.py:1977 msgid "Group on signup" msgstr "" -#: common/models.py:1955 +#: common/models.py:1978 msgid "Group to which new users are assigned on registration" msgstr "" -#: common/models.py:1960 +#: common/models.py:1983 msgid "Enforce MFA" msgstr "" -#: common/models.py:1961 +#: common/models.py:1984 msgid "Users must use multifactor security." msgstr "" -#: common/models.py:1966 +#: common/models.py:1989 msgid "Check plugins on startup" msgstr "" -#: common/models.py:1968 +#: common/models.py:1991 msgid "Check that all plugins are installed on startup - enable in container environments" msgstr "" -#: common/models.py:1976 +#: common/models.py:1999 msgid "Check for plugin updates" msgstr "" -#: common/models.py:1977 +#: common/models.py:2000 msgid "Enable periodic checks for updates to installed plugins" msgstr "" -#: common/models.py:1983 +#: common/models.py:2006 msgid "Enable URL integration" msgstr "" -#: common/models.py:1984 +#: common/models.py:2007 msgid "Enable plugins to add URL routes" msgstr "" -#: common/models.py:1990 +#: common/models.py:2013 msgid "Enable navigation integration" msgstr "" -#: common/models.py:1991 +#: common/models.py:2014 msgid "Enable plugins to integrate into navigation" msgstr "" -#: common/models.py:1997 +#: common/models.py:2020 msgid "Enable app integration" msgstr "" -#: common/models.py:1998 +#: common/models.py:2021 msgid "Enable plugins to add apps" msgstr "" -#: common/models.py:2004 +#: common/models.py:2027 msgid "Enable schedule integration" msgstr "" -#: common/models.py:2005 +#: common/models.py:2028 msgid "Enable plugins to run scheduled tasks" msgstr "" -#: common/models.py:2011 +#: common/models.py:2034 msgid "Enable event integration" msgstr "" -#: common/models.py:2012 +#: common/models.py:2035 msgid "Enable plugins to respond to internal events" msgstr "" -#: common/models.py:2018 +#: common/models.py:2041 msgid "Enable project codes" msgstr "" -#: common/models.py:2019 +#: common/models.py:2042 msgid "Enable project codes for tracking projects" msgstr "" -#: common/models.py:2024 +#: common/models.py:2047 msgid "Stocktake Functionality" msgstr "" -#: common/models.py:2026 +#: common/models.py:2049 msgid "Enable stocktake functionality for recording stock levels and calculating stock value" msgstr "" -#: common/models.py:2032 +#: common/models.py:2055 msgid "Exclude External Locations" msgstr "" -#: common/models.py:2034 +#: common/models.py:2057 msgid "Exclude stock items in external locations from stocktake calculations" msgstr "" -#: common/models.py:2040 +#: common/models.py:2063 msgid "Automatic Stocktake Period" msgstr "" -#: common/models.py:2042 +#: common/models.py:2065 msgid "Number of days between automatic stocktake recording (set to zero to disable)" msgstr "" -#: common/models.py:2048 +#: common/models.py:2071 msgid "Report Deletion Interval" msgstr "" -#: common/models.py:2050 +#: common/models.py:2073 msgid "Stocktake reports will be deleted after specified number of days" msgstr "" -#: common/models.py:2057 +#: common/models.py:2080 msgid "Display Users full names" msgstr "" -#: common/models.py:2058 +#: common/models.py:2081 msgid "Display Users full names instead of usernames" msgstr "" -#: common/models.py:2063 +#: common/models.py:2086 msgid "Enable Test Station Data" msgstr "" -#: common/models.py:2064 +#: common/models.py:2087 msgid "Enable test station data collection for test results" msgstr "" -#: common/models.py:2076 common/models.py:2486 +#: common/models.py:2099 common/models.py:2509 msgid "Settings key (must be unique - case insensitive" msgstr "" -#: common/models.py:2119 +#: common/models.py:2142 msgid "Hide inactive parts" msgstr "" -#: common/models.py:2121 +#: common/models.py:2144 msgid "Hide inactive parts in results displayed on the homepage" msgstr "" -#: common/models.py:2127 +#: common/models.py:2150 msgid "Show subscribed parts" msgstr "" -#: common/models.py:2128 +#: common/models.py:2151 msgid "Show subscribed parts on the homepage" msgstr "" -#: common/models.py:2133 +#: common/models.py:2156 msgid "Show subscribed categories" msgstr "" -#: common/models.py:2134 +#: common/models.py:2157 msgid "Show subscribed part categories on the homepage" msgstr "" -#: common/models.py:2139 +#: common/models.py:2162 msgid "Show latest parts" msgstr "" -#: common/models.py:2140 +#: common/models.py:2163 msgid "Show latest parts on the homepage" msgstr "" -#: common/models.py:2145 +#: common/models.py:2168 msgid "Show invalid BOMs" msgstr "" -#: common/models.py:2146 +#: common/models.py:2169 msgid "Show BOMs that await validation on the homepage" msgstr "" -#: common/models.py:2151 +#: common/models.py:2174 msgid "Show recent stock changes" msgstr "" -#: common/models.py:2152 +#: common/models.py:2175 msgid "Show recently changed stock items on the homepage" msgstr "" -#: common/models.py:2157 +#: common/models.py:2180 msgid "Show low stock" msgstr "" -#: common/models.py:2158 +#: common/models.py:2181 msgid "Show low stock items on the homepage" msgstr "" -#: common/models.py:2163 +#: common/models.py:2186 msgid "Show depleted stock" msgstr "" -#: common/models.py:2164 +#: common/models.py:2187 msgid "Show depleted stock items on the homepage" msgstr "" -#: common/models.py:2169 +#: common/models.py:2192 msgid "Show needed stock" msgstr "" -#: common/models.py:2170 +#: common/models.py:2193 msgid "Show stock items needed for builds on the homepage" msgstr "" -#: common/models.py:2175 +#: common/models.py:2198 msgid "Show expired stock" msgstr "" -#: common/models.py:2176 +#: common/models.py:2199 msgid "Show expired stock items on the homepage" msgstr "" -#: common/models.py:2181 +#: common/models.py:2204 msgid "Show stale stock" msgstr "" -#: common/models.py:2182 +#: common/models.py:2205 msgid "Show stale stock items on the homepage" msgstr "" -#: common/models.py:2187 +#: common/models.py:2210 msgid "Show pending builds" msgstr "" -#: common/models.py:2188 +#: common/models.py:2211 msgid "Show pending builds on the homepage" msgstr "" -#: common/models.py:2193 +#: common/models.py:2216 msgid "Show overdue builds" msgstr "" -#: common/models.py:2194 +#: common/models.py:2217 msgid "Show overdue builds on the homepage" msgstr "" -#: common/models.py:2199 +#: common/models.py:2222 msgid "Show outstanding POs" msgstr "" -#: common/models.py:2200 +#: common/models.py:2223 msgid "Show outstanding POs on the homepage" msgstr "" -#: common/models.py:2205 +#: common/models.py:2228 msgid "Show overdue POs" msgstr "" -#: common/models.py:2206 +#: common/models.py:2229 msgid "Show overdue POs on the homepage" msgstr "" -#: common/models.py:2211 +#: common/models.py:2234 msgid "Show outstanding SOs" msgstr "" -#: common/models.py:2212 +#: common/models.py:2235 msgid "Show outstanding SOs on the homepage" msgstr "" -#: common/models.py:2217 +#: common/models.py:2240 msgid "Show overdue SOs" msgstr "" -#: common/models.py:2218 +#: common/models.py:2241 msgid "Show overdue SOs on the homepage" msgstr "" -#: common/models.py:2223 +#: common/models.py:2246 msgid "Show pending SO shipments" msgstr "" -#: common/models.py:2224 +#: common/models.py:2247 msgid "Show pending SO shipments on the homepage" msgstr "" -#: common/models.py:2229 +#: common/models.py:2252 msgid "Show News" msgstr "" -#: common/models.py:2230 +#: common/models.py:2253 msgid "Show news on the homepage" msgstr "" -#: common/models.py:2235 +#: common/models.py:2258 msgid "Inline label display" msgstr "" -#: common/models.py:2237 +#: common/models.py:2260 msgid "Display PDF labels in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2243 +#: common/models.py:2266 msgid "Default label printer" msgstr "" -#: common/models.py:2245 +#: common/models.py:2268 msgid "Configure which label printer should be selected by default" msgstr "" -#: common/models.py:2251 +#: common/models.py:2274 msgid "Inline report display" msgstr "" -#: common/models.py:2253 +#: common/models.py:2276 msgid "Display PDF reports in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2259 +#: common/models.py:2282 msgid "Search Parts" msgstr "" -#: common/models.py:2260 +#: common/models.py:2283 msgid "Display parts in search preview window" msgstr "" -#: common/models.py:2265 +#: common/models.py:2288 msgid "Search Supplier Parts" msgstr "" -#: common/models.py:2266 +#: common/models.py:2289 msgid "Display supplier parts in search preview window" msgstr "" -#: common/models.py:2271 +#: common/models.py:2294 msgid "Search Manufacturer Parts" msgstr "" -#: common/models.py:2272 +#: common/models.py:2295 msgid "Display manufacturer parts in search preview window" msgstr "" -#: common/models.py:2277 +#: common/models.py:2300 msgid "Hide Inactive Parts" msgstr "" -#: common/models.py:2278 +#: common/models.py:2301 msgid "Excluded inactive parts from search preview window" msgstr "" -#: common/models.py:2283 +#: common/models.py:2306 msgid "Search Categories" msgstr "" -#: common/models.py:2284 +#: common/models.py:2307 msgid "Display part categories in search preview window" msgstr "" -#: common/models.py:2289 +#: common/models.py:2312 msgid "Search Stock" msgstr "" -#: common/models.py:2290 +#: common/models.py:2313 msgid "Display stock items in search preview window" msgstr "" -#: common/models.py:2295 +#: common/models.py:2318 msgid "Hide Unavailable Stock Items" msgstr "" -#: common/models.py:2297 +#: common/models.py:2320 msgid "Exclude stock items which are not available from the search preview window" msgstr "" -#: common/models.py:2303 +#: common/models.py:2326 msgid "Search Locations" msgstr "" -#: common/models.py:2304 +#: common/models.py:2327 msgid "Display stock locations in search preview window" msgstr "" -#: common/models.py:2309 +#: common/models.py:2332 msgid "Search Companies" msgstr "" -#: common/models.py:2310 +#: common/models.py:2333 msgid "Display companies in search preview window" msgstr "" -#: common/models.py:2315 +#: common/models.py:2338 msgid "Search Build Orders" msgstr "" -#: common/models.py:2316 +#: common/models.py:2339 msgid "Display build orders in search preview window" msgstr "" -#: common/models.py:2321 +#: common/models.py:2344 msgid "Search Purchase Orders" msgstr "" -#: common/models.py:2322 +#: common/models.py:2345 msgid "Display purchase orders in search preview window" msgstr "" -#: common/models.py:2327 +#: common/models.py:2350 msgid "Exclude Inactive Purchase Orders" msgstr "" -#: common/models.py:2329 +#: common/models.py:2352 msgid "Exclude inactive purchase orders from search preview window" msgstr "" -#: common/models.py:2335 +#: common/models.py:2358 msgid "Search Sales Orders" msgstr "" -#: common/models.py:2336 +#: common/models.py:2359 msgid "Display sales orders in search preview window" msgstr "" -#: common/models.py:2341 +#: common/models.py:2364 msgid "Exclude Inactive Sales Orders" msgstr "" -#: common/models.py:2343 +#: common/models.py:2366 msgid "Exclude inactive sales orders from search preview window" msgstr "" -#: common/models.py:2349 +#: common/models.py:2372 msgid "Search Return Orders" msgstr "" -#: common/models.py:2350 +#: common/models.py:2373 msgid "Display return orders in search preview window" msgstr "" -#: common/models.py:2355 +#: common/models.py:2378 msgid "Exclude Inactive Return Orders" msgstr "" -#: common/models.py:2357 +#: common/models.py:2380 msgid "Exclude inactive return orders from search preview window" msgstr "" -#: common/models.py:2363 +#: common/models.py:2386 msgid "Search Preview Results" msgstr "" -#: common/models.py:2365 +#: common/models.py:2388 msgid "Number of results to show in each section of the search preview window" msgstr "" -#: common/models.py:2371 +#: common/models.py:2394 msgid "Regex Search" msgstr "" -#: common/models.py:2372 +#: common/models.py:2395 msgid "Enable regular expressions in search queries" msgstr "" -#: common/models.py:2377 +#: common/models.py:2400 msgid "Whole Word Search" msgstr "" -#: common/models.py:2378 +#: common/models.py:2401 msgid "Search queries return results for whole word matches" msgstr "" -#: common/models.py:2383 +#: common/models.py:2406 msgid "Show Quantity in Forms" msgstr "" -#: common/models.py:2384 +#: common/models.py:2407 msgid "Display available part quantity in some forms" msgstr "" -#: common/models.py:2389 +#: common/models.py:2412 msgid "Escape Key Closes Forms" msgstr "" -#: common/models.py:2390 +#: common/models.py:2413 msgid "Use the escape key to close modal forms" msgstr "" -#: common/models.py:2395 +#: common/models.py:2418 msgid "Fixed Navbar" msgstr "" -#: common/models.py:2396 +#: common/models.py:2419 msgid "The navbar position is fixed to the top of the screen" msgstr "" -#: common/models.py:2401 +#: common/models.py:2424 msgid "Date Format" msgstr "" -#: common/models.py:2402 +#: common/models.py:2425 msgid "Preferred format for displaying dates" msgstr "" -#: common/models.py:2415 part/templates/part/detail.html:41 +#: common/models.py:2438 part/templates/part/detail.html:41 msgid "Part Scheduling" msgstr "" -#: common/models.py:2416 +#: common/models.py:2439 msgid "Display part scheduling information" msgstr "" -#: common/models.py:2421 part/templates/part/detail.html:62 +#: common/models.py:2444 part/templates/part/detail.html:62 msgid "Part Stocktake" msgstr "" -#: common/models.py:2423 +#: common/models.py:2446 msgid "Display part stocktake information (if stocktake functionality is enabled)" msgstr "" -#: common/models.py:2429 +#: common/models.py:2452 msgid "Table String Length" msgstr "" -#: common/models.py:2431 +#: common/models.py:2454 msgid "Maximum length limit for strings displayed in table views" msgstr "" -#: common/models.py:2437 +#: common/models.py:2460 msgid "Default part label template" msgstr "" -#: common/models.py:2438 +#: common/models.py:2461 msgid "The part label template to be automatically selected" msgstr "" -#: common/models.py:2443 +#: common/models.py:2466 msgid "Default stock item template" msgstr "" -#: common/models.py:2445 +#: common/models.py:2468 msgid "The stock item label template to be automatically selected" msgstr "" -#: common/models.py:2451 +#: common/models.py:2474 msgid "Default stock location label template" msgstr "" -#: common/models.py:2453 +#: common/models.py:2476 msgid "The stock location label template to be automatically selected" msgstr "" -#: common/models.py:2459 +#: common/models.py:2482 msgid "Default build line label template" msgstr "" -#: common/models.py:2461 +#: common/models.py:2484 msgid "The build line label template to be automatically selected" msgstr "" -#: common/models.py:2467 +#: common/models.py:2490 msgid "Receive error reports" msgstr "" -#: common/models.py:2468 +#: common/models.py:2491 msgid "Receive notifications for system errors" msgstr "" -#: common/models.py:2473 +#: common/models.py:2496 msgid "Last used printing machines" msgstr "" -#: common/models.py:2474 +#: common/models.py:2497 msgid "Save the last used printing machines for a user" msgstr "" -#: common/models.py:2517 +#: common/models.py:2540 msgid "Price break quantity" msgstr "" -#: common/models.py:2524 company/serializers.py:496 order/admin.py:42 -#: order/models.py:1333 order/models.py:2241 +#: common/models.py:2547 company/serializers.py:496 order/admin.py:42 +#: order/models.py:1382 order/models.py:2301 #: templates/js/translated/company.js:1823 templates/js/translated/part.js:1885 #: templates/js/translated/pricing.js:621 -#: templates/js/translated/return_order.js:741 +#: templates/js/translated/return_order.js:740 msgid "Price" msgstr "" -#: common/models.py:2525 +#: common/models.py:2548 msgid "Unit price at specified quantity" msgstr "" -#: common/models.py:2696 common/models.py:2881 +#: common/models.py:2719 common/models.py:2904 msgid "Endpoint" msgstr "" -#: common/models.py:2697 +#: common/models.py:2720 msgid "Endpoint at which this webhook is received" msgstr "" -#: common/models.py:2707 +#: common/models.py:2730 msgid "Name for this webhook" msgstr "" -#: common/models.py:2711 company/models.py:160 company/models.py:813 -#: machine/models.py:39 part/admin.py:88 part/models.py:1045 -#: plugin/models.py:56 templates/js/translated/company.js:523 +#: common/models.py:2734 company/models.py:160 company/models.py:814 +#: machine/models.py:39 part/admin.py:88 part/models.py:1088 +#: plugin/models.py:65 templates/js/translated/company.js:523 #: templates/js/translated/table_filters.js:135 #: templates/js/translated/table_filters.js:219 #: templates/js/translated/table_filters.js:492 @@ -3586,135 +3462,135 @@ msgstr "" msgid "Active" msgstr "" -#: common/models.py:2711 +#: common/models.py:2734 msgid "Is this webhook active" msgstr "" -#: common/models.py:2727 users/models.py:159 +#: common/models.py:2750 users/models.py:159 msgid "Token" msgstr "" -#: common/models.py:2728 +#: common/models.py:2751 msgid "Token for access" msgstr "" -#: common/models.py:2736 +#: common/models.py:2759 msgid "Secret" msgstr "" -#: common/models.py:2737 +#: common/models.py:2760 msgid "Shared secret for HMAC" msgstr "" -#: common/models.py:2845 +#: common/models.py:2868 msgid "Message ID" msgstr "" -#: common/models.py:2846 +#: common/models.py:2869 msgid "Unique identifier for this message" msgstr "" -#: common/models.py:2854 +#: common/models.py:2877 msgid "Host" msgstr "" -#: common/models.py:2855 +#: common/models.py:2878 msgid "Host from which this message was received" msgstr "" -#: common/models.py:2863 +#: common/models.py:2886 msgid "Header" msgstr "" -#: common/models.py:2864 +#: common/models.py:2887 msgid "Header of this message" msgstr "" -#: common/models.py:2871 +#: common/models.py:2894 msgid "Body" msgstr "" -#: common/models.py:2872 +#: common/models.py:2895 msgid "Body of this message" msgstr "" -#: common/models.py:2882 +#: common/models.py:2905 msgid "Endpoint on which this message was received" msgstr "" -#: common/models.py:2887 +#: common/models.py:2910 msgid "Worked on" msgstr "" -#: common/models.py:2888 +#: common/models.py:2911 msgid "Was the work on this message finished?" msgstr "" -#: common/models.py:3014 +#: common/models.py:3037 msgid "Id" msgstr "" -#: common/models.py:3016 templates/js/translated/company.js:965 +#: common/models.py:3039 templates/js/translated/company.js:965 #: templates/js/translated/news.js:44 msgid "Title" msgstr "" -#: common/models.py:3020 templates/js/translated/news.js:60 +#: common/models.py:3043 templates/js/translated/news.js:60 msgid "Published" msgstr "" -#: common/models.py:3022 templates/InvenTree/settings/plugin_settings.html:32 +#: common/models.py:3045 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:3024 templates/js/translated/news.js:52 +#: common/models.py:3047 templates/js/translated/news.js:52 msgid "Summary" msgstr "" -#: common/models.py:3027 +#: common/models.py:3050 msgid "Read" msgstr "" -#: common/models.py:3027 +#: common/models.py:3050 msgid "Was this news item read?" msgstr "" -#: common/models.py:3044 company/models.py:156 part/models.py:929 +#: common/models.py:3067 company/models.py:156 part/models.py:972 #: 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 +#: report/templates/report/inventree_return_order_report.html:35 #: stock/templates/stock/item_base.html:133 templates/503.html:31 #: templates/hover_image.html:7 templates/hover_image.html:9 #: templates/modals.html:6 msgid "Image" msgstr "" -#: common/models.py:3044 +#: common/models.py:3067 msgid "Image file" msgstr "" -#: common/models.py:3086 +#: common/models.py:3109 msgid "Unit name must be a valid identifier" msgstr "" -#: common/models.py:3105 +#: common/models.py:3128 msgid "Unit name" msgstr "" -#: common/models.py:3112 templates/InvenTree/settings/settings_staff_js.html:75 +#: common/models.py:3135 templates/InvenTree/settings/settings_staff_js.html:75 msgid "Symbol" msgstr "" -#: common/models.py:3113 +#: common/models.py:3136 msgid "Optional unit symbol" msgstr "" -#: common/models.py:3120 templates/InvenTree/settings/settings_staff_js.html:71 +#: common/models.py:3143 templates/InvenTree/settings/settings_staff_js.html:71 msgid "Definition" msgstr "" -#: common/models.py:3121 +#: common/models.py:3144 msgid "Unit definition" msgstr "" @@ -3736,7 +3612,7 @@ msgstr "" msgid "A order that is assigned to you was canceled" msgstr "" -#: common/notifications.py:330 common/notifications.py:337 order/api.py:468 +#: common/notifications.py:330 common/notifications.py:337 order/api.py:472 msgid "Items Received" msgstr "" @@ -3752,63 +3628,63 @@ msgstr "" msgid "Error raised by plugin" msgstr "" -#: common/serializers.py:333 +#: common/serializers.py:366 msgid "Is Running" msgstr "" -#: common/serializers.py:339 +#: common/serializers.py:372 msgid "Pending Tasks" msgstr "" -#: common/serializers.py:345 +#: common/serializers.py:378 msgid "Scheduled Tasks" msgstr "" -#: common/serializers.py:351 +#: common/serializers.py:384 msgid "Failed Tasks" msgstr "" -#: common/serializers.py:366 +#: common/serializers.py:399 msgid "Task ID" msgstr "" -#: common/serializers.py:366 +#: common/serializers.py:399 msgid "Unique task ID" msgstr "" -#: common/serializers.py:368 +#: common/serializers.py:401 msgid "Lock" msgstr "" -#: common/serializers.py:368 +#: common/serializers.py:401 msgid "Lock time" msgstr "" -#: common/serializers.py:370 +#: common/serializers.py:403 msgid "Task name" msgstr "" -#: common/serializers.py:372 +#: common/serializers.py:405 msgid "Function" msgstr "" -#: common/serializers.py:372 +#: common/serializers.py:405 msgid "Function name" msgstr "" -#: common/serializers.py:374 +#: common/serializers.py:407 msgid "Arguments" msgstr "" -#: common/serializers.py:374 +#: common/serializers.py:407 msgid "Task arguments" msgstr "" -#: common/serializers.py:377 +#: common/serializers.py:410 msgid "Keyword Arguments" msgstr "" -#: common/serializers.py:377 +#: common/serializers.py:410 msgid "Task keyword arguments" msgstr "" @@ -3901,9 +3777,9 @@ msgid "Contact email address" msgstr "" #: company/models.py:139 company/templates/company/company_base.html:145 -#: order/models.py:331 order/templates/order/order_base.html:203 +#: order/models.py:343 order/templates/order/order_base.html:203 #: order/templates/order/return_order_base.html:174 -#: order/templates/order/sales_order_base.html:214 +#: order/templates/order/sales_order_base.html:218 msgid "Contact" msgstr "" @@ -3949,7 +3825,7 @@ msgstr "" #: company/models.py:273 company/models.py:382 #: company/templates/company/company_base.html:8 -#: company/templates/company/company_base.html:12 stock/api.py:776 +#: company/templates/company/company_base.html:12 stock/api.py:812 #: templates/InvenTree/search.html:178 templates/js/translated/company.js:496 msgid "Company" msgstr "" @@ -4041,19 +3917,19 @@ msgstr "" msgid "Link to address information (external)" msgstr "" -#: company/models.py:489 company/models.py:791 stock/models.py:751 -#: stock/serializers.py:266 stock/templates/stock/item_base.html:142 +#: company/models.py:489 company/models.py:792 stock/models.py:768 +#: stock/serializers.py:395 stock/templates/stock/item_base.html:142 #: templates/js/translated/bom.js:622 msgid "Base Part" msgstr "" -#: company/models.py:491 company/models.py:793 +#: company/models.py:491 company/models.py:794 msgid "Select part" msgstr "" #: company/models.py:500 company/templates/company/company_base.html:82 #: company/templates/company/manufacturer_part.html:90 -#: company/templates/company/supplier_part.html:145 part/serializers.py:515 +#: company/templates/company/supplier_part.html:145 part/serializers.py:530 #: stock/templates/stock/item_base.html:207 #: templates/js/translated/company.js:507 #: templates/js/translated/company.js:1118 @@ -4068,13 +3944,13 @@ msgid "Select manufacturer" msgstr "" #: company/models.py:507 company/templates/company/manufacturer_part.html:101 -#: company/templates/company/supplier_part.html:153 part/serializers.py:525 +#: company/templates/company/supplier_part.html:153 part/serializers.py:540 #: templates/js/translated/company.js:351 #: templates/js/translated/company.js:1117 #: templates/js/translated/company.js:1312 #: templates/js/translated/company.js:1630 templates/js/translated/part.js:1800 -#: templates/js/translated/purchase_order.js:1852 -#: templates/js/translated/purchase_order.js:2054 +#: templates/js/translated/purchase_order.js:1851 +#: templates/js/translated/purchase_order.js:2053 msgid "MPN" msgstr "" @@ -4086,61 +3962,60 @@ msgstr "" msgid "URL for external manufacturer part link" msgstr "" -#: company/models.py:523 +#: company/models.py:524 msgid "Manufacturer part description" msgstr "" -#: company/models.py:580 company/models.py:607 company/models.py:823 +#: company/models.py:581 company/models.py:608 company/models.py:824 #: company/templates/company/manufacturer_part.html:7 #: company/templates/company/manufacturer_part.html:24 #: stock/templates/stock/item_base.html:217 msgid "Manufacturer Part" msgstr "" -#: company/models.py:614 +#: company/models.py:615 msgid "Parameter name" msgstr "" -#: company/models.py:620 -#: report/templates/report/inventree_test_report_base.html:104 -#: stock/models.py:2436 templates/js/translated/company.js:1166 +#: company/models.py:621 report/templates/report/inventree_test_report.html:104 +#: stock/models.py:2429 templates/js/translated/company.js:1166 #: templates/js/translated/company.js:1419 templates/js/translated/part.js:1492 -#: templates/js/translated/stock.js:1519 +#: templates/js/translated/stock.js:1522 msgid "Value" msgstr "" -#: company/models.py:621 +#: company/models.py:622 msgid "Parameter value" msgstr "" -#: company/models.py:628 company/templates/company/supplier_part.html:168 -#: part/admin.py:57 part/models.py:1009 part/models.py:3623 +#: company/models.py:629 company/templates/company/supplier_part.html:168 +#: part/admin.py:57 part/models.py:1052 part/models.py:3666 #: part/templates/part/part_base.html:284 #: templates/js/translated/company.js:1425 templates/js/translated/part.js:1511 -#: templates/js/translated/part.js:1615 templates/js/translated/part.js:2370 +#: templates/js/translated/part.js:1615 templates/js/translated/part.js:2369 msgid "Units" msgstr "" -#: company/models.py:629 +#: company/models.py:630 msgid "Parameter units" msgstr "" -#: company/models.py:731 +#: company/models.py:732 msgid "Pack units must be compatible with the base part units" msgstr "" -#: company/models.py:738 +#: company/models.py:739 msgid "Pack units must be greater than zero" msgstr "" -#: company/models.py:752 +#: company/models.py:753 msgid "Linked manufacturer part must reference the same base part" msgstr "" -#: company/models.py:801 company/templates/company/company_base.html:87 -#: company/templates/company/supplier_part.html:129 order/models.py:465 +#: company/models.py:802 company/templates/company/company_base.html:87 +#: company/templates/company/supplier_part.html:129 order/models.py:486 #: order/templates/order/order_base.html:136 part/bom.py:272 part/bom.py:310 -#: part/serializers.py:499 plugin/builtin/suppliers/digikey.py:25 +#: part/serializers.py:514 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 @@ -4148,97 +4023,97 @@ msgstr "" #: templates/js/translated/company.js:511 #: templates/js/translated/company.js:1584 templates/js/translated/part.js:1768 #: templates/js/translated/pricing.js:498 -#: templates/js/translated/purchase_order.js:1690 +#: templates/js/translated/purchase_order.js:1689 #: templates/js/translated/table_filters.js:804 msgid "Supplier" msgstr "" -#: company/models.py:802 +#: company/models.py:803 msgid "Select supplier" msgstr "" -#: company/models.py:808 part/serializers.py:510 +#: company/models.py:809 part/serializers.py:525 msgid "Supplier stock keeping unit" msgstr "" -#: company/models.py:814 +#: company/models.py:815 msgid "Is this supplier part active?" msgstr "" -#: company/models.py:824 +#: company/models.py:825 msgid "Select manufacturer part" msgstr "" -#: company/models.py:831 +#: company/models.py:832 msgid "URL for external supplier part link" msgstr "" -#: company/models.py:839 +#: company/models.py:841 msgid "Supplier part description" msgstr "" -#: company/models.py:846 company/templates/company/supplier_part.html:187 -#: part/admin.py:418 part/models.py:4070 part/templates/part/upload_bom.html:59 +#: company/models.py:848 company/templates/company/supplier_part.html:187 +#: part/admin.py:420 part/models.py:4113 part/templates/part/upload_bom.html:59 #: 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 +#: report/templates/report/inventree_purchase_order_report.html:32 +#: report/templates/report/inventree_return_order_report.html:27 +#: report/templates/report/inventree_sales_order_report.html:32 +#: report/templates/report/inventree_stock_location_report.html:105 +#: stock/serializers.py:708 msgid "Note" msgstr "" -#: company/models.py:855 part/models.py:1967 +#: company/models.py:857 part/models.py:2010 msgid "base cost" msgstr "" -#: company/models.py:856 part/models.py:1968 +#: company/models.py:858 part/models.py:2011 msgid "Minimum charge (e.g. stocking fee)" msgstr "" -#: company/models.py:863 company/templates/company/supplier_part.html:160 -#: stock/admin.py:224 stock/models.py:782 stock/serializers.py:1350 +#: company/models.py:865 company/templates/company/supplier_part.html:160 +#: stock/admin.py:224 stock/models.py:799 stock/serializers.py:1479 #: stock/templates/stock/item_base.html:240 #: templates/js/translated/company.js:1646 -#: templates/js/translated/stock.js:2423 +#: templates/js/translated/stock.js:2424 msgid "Packaging" msgstr "" -#: company/models.py:864 +#: company/models.py:866 msgid "Part packaging" msgstr "" -#: company/models.py:869 templates/js/translated/company.js:1651 +#: company/models.py:871 templates/js/translated/company.js:1651 #: 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 +#: templates/js/translated/purchase_order.js:2084 +#: templates/js/translated/purchase_order.js:2101 msgid "Pack Quantity" msgstr "" -#: company/models.py:871 +#: company/models.py:873 msgid "Total quantity supplied in a single pack. Leave empty for single items." msgstr "" -#: company/models.py:890 part/models.py:1974 +#: company/models.py:892 part/models.py:2017 msgid "multiple" msgstr "" -#: company/models.py:891 +#: company/models.py:893 msgid "Order multiple" msgstr "" -#: company/models.py:903 +#: company/models.py:905 msgid "Quantity available from supplier" msgstr "" -#: company/models.py:909 +#: company/models.py:911 msgid "Availability Updated" msgstr "" -#: company/models.py:910 +#: company/models.py:912 msgid "Date of last update of availability data" msgstr "" @@ -4257,7 +4132,7 @@ msgstr "" #: part/templates/part/part_base.html:146 #: templates/js/translated/company.js:1287 #: templates/js/translated/company.js:1575 -#: templates/js/translated/model_renderers.js:306 +#: templates/js/translated/model_renderers.js:312 #: templates/js/translated/part.js:814 templates/js/translated/part.js:1218 msgid "Inactive" msgstr "" @@ -4293,11 +4168,11 @@ msgstr "" #: 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 +#: report/templates/report/inventree_build_order_report.html:98 +#: report/templates/report/inventree_purchase_order_report.html:40 +#: report/templates/report/inventree_sales_order_report.html:40 +#: report/templates/report/inventree_test_report.html:84 +#: report/templates/report/inventree_test_report.html:163 msgid "Part image" msgstr "" @@ -4316,15 +4191,15 @@ msgstr "" msgid "Delete image" msgstr "" -#: company/templates/company/company_base.html:92 order/models.py:910 -#: order/models.py:2008 order/templates/order/return_order_base.html:131 -#: order/templates/order/sales_order_base.html:144 stock/models.py:804 -#: stock/models.py:805 stock/serializers.py:1100 +#: company/templates/company/company_base.html:92 order/models.py:940 +#: order/models.py:2068 order/templates/order/return_order_base.html:131 +#: order/templates/order/sales_order_base.html:148 stock/models.py:821 +#: stock/models.py:822 stock/serializers.py:1229 #: stock/templates/stock/item_base.html:405 #: templates/email/overdue_sales_order.html:16 #: templates/js/translated/company.js:503 -#: templates/js/translated/return_order.js:296 -#: templates/js/translated/sales_order.js:784 +#: templates/js/translated/return_order.js:295 +#: templates/js/translated/sales_order.js:820 #: templates/js/translated/stock.js:2959 #: templates/js/translated/table_filters.js:808 msgid "Customer" @@ -4334,10 +4209,10 @@ msgstr "" msgid "Uses default currency" msgstr "" -#: company/templates/company/company_base.html:124 order/models.py:341 +#: company/templates/company/company_base.html:124 order/models.py:353 #: order/templates/order/order_base.html:210 #: order/templates/order/return_order_base.html:181 -#: order/templates/order/sales_order_base.html:221 +#: order/templates/order/sales_order_base.html:225 msgid "Address" msgstr "" @@ -4346,7 +4221,7 @@ msgid "Phone" msgstr "" #: company/templates/company/company_base.html:211 -#: part/templates/part/part_base.html:528 +#: part/templates/part/part_base.html:527 msgid "Remove Image" msgstr "" @@ -4355,19 +4230,19 @@ msgid "Remove associated image from this company" msgstr "" #: company/templates/company/company_base.html:214 -#: part/templates/part/part_base.html:531 +#: part/templates/part/part_base.html:530 #: templates/InvenTree/settings/user.html:88 #: templates/InvenTree/settings/user_sso.html:43 msgid "Remove" msgstr "" #: company/templates/company/company_base.html:243 -#: part/templates/part/part_base.html:560 +#: part/templates/part/part_base.html:559 msgid "Upload Image" msgstr "" #: company/templates/company/company_base.html:258 -#: part/templates/part/part_base.html:614 +#: part/templates/part/part_base.html:613 msgid "Download Image" msgstr "" @@ -4520,7 +4395,7 @@ msgid "Delete manufacturer part" msgstr "" #: company/templates/company/manufacturer_part.html:65 -#: company/templates/company/supplier_part.html:97 order/api.py:454 +#: company/templates/company/supplier_part.html:97 order/api.py:458 msgid "Internal Part" msgstr "" @@ -4530,7 +4405,7 @@ msgstr "" #: company/templates/company/manufacturer_part.html:119 #: company/templates/company/supplier_part.html:15 company/views.py:31 -#: part/admin.py:122 part/serializers.py:821 +#: part/admin.py:122 part/serializers.py:836 #: part/templates/part/part_sidebar.html:33 templates/InvenTree/search.html:190 #: templates/navbar.html:48 msgid "Suppliers" @@ -4580,11 +4455,11 @@ msgid "Addresses" msgstr "" #: company/templates/company/supplier_part.html:7 -#: company/templates/company/supplier_part.html:24 order/api.py:448 -#: stock/models.py:762 stock/templates/stock/item_base.html:233 +#: company/templates/company/supplier_part.html:24 order/api.py:452 +#: stock/models.py:779 stock/templates/stock/item_base.html:233 #: templates/js/translated/company.js:1600 #: templates/js/translated/purchase_order.js:752 -#: templates/js/translated/stock.js:2279 +#: templates/js/translated/stock.js:2280 msgid "Supplier Part" msgstr "" @@ -4630,11 +4505,11 @@ 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 +#: part/bom.py:311 part/serializers.py:524 #: 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 +#: templates/js/translated/purchase_order.js:1850 +#: templates/js/translated/purchase_order.js:2028 msgid "SKU" msgstr "" @@ -4643,12 +4518,12 @@ msgid "Supplier Part Stock" msgstr "" #: company/templates/company/supplier_part.html:209 -#: part/templates/part/detail.html:24 stock/templates/stock/location.html:199 +#: part/templates/part/detail.html:24 stock/templates/stock/location.html:206 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 +#: part/templates/part/detail.html:25 stock/templates/stock/location.html:207 #: templates/js/translated/stock.js:537 msgid "New Stock Item" msgstr "" @@ -4680,13 +4555,13 @@ msgid "Update Part Availability" msgstr "" #: company/templates/company/supplier_part_sidebar.html:5 -#: part/serializers.py:820 part/stocktake.py:223 +#: part/serializers.py:835 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/serializers.py:916 stock/serializers.py:1080 #: stock/templates/stock/location.html:170 -#: stock/templates/stock/location.html:184 -#: stock/templates/stock/location.html:196 +#: stock/templates/stock/location.html:191 +#: stock/templates/stock/location.html:203 #: stock/templates/stock/location_sidebar.html:7 #: templates/InvenTree/search.html:155 templates/js/translated/part.js:1060 #: templates/js/translated/search.js:172 templates/js/translated/stock.js:2766 @@ -4723,126 +4598,52 @@ msgstr "" 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:3494 report/models.py:324 -#: 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:317 -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:345 report/models.py:496 -#: report/models.py:532 report/models.py:568 report/models.py:750 -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" +#: generic/states/tests.py:18 order/status_codes.py:13 +msgid "Placed" msgstr "" #: machine/machine_types/label_printer.py:218 +msgid "Copies" +msgstr "" + +#: machine/machine_types/label_printer.py:219 msgid "Number of copies to print for each label" msgstr "" -#: machine/machine_types/label_printer.py:233 +#: machine/machine_types/label_printer.py:234 msgid "Connected" msgstr "" -#: machine/machine_types/label_printer.py:234 order/api.py:1511 -#: templates/js/translated/sales_order.js:1042 +#: machine/machine_types/label_printer.py:235 order/api.py:1515 +#: templates/js/translated/sales_order.js:1078 msgid "Unknown" msgstr "" -#: machine/machine_types/label_printer.py:235 +#: machine/machine_types/label_printer.py:236 msgid "Printing" msgstr "" -#: machine/machine_types/label_printer.py:236 +#: machine/machine_types/label_printer.py:237 msgid "No media" msgstr "" -#: machine/machine_types/label_printer.py:237 +#: machine/machine_types/label_printer.py:238 msgid "Disconnected" msgstr "" -#: machine/machine_types/label_printer.py:244 +#: machine/machine_types/label_printer.py:245 msgid "Label Printer" msgstr "" -#: machine/machine_types/label_printer.py:245 +#: machine/machine_types/label_printer.py:246 msgid "Directly print labels for various items." msgstr "" -#: machine/machine_types/label_printer.py:251 +#: machine/machine_types/label_printer.py:252 msgid "Printer Location" msgstr "" -#: machine/machine_types/label_printer.py:252 +#: machine/machine_types/label_printer.py:253 msgid "Scope the printer to a specific location" msgstr "" @@ -4903,63 +4704,64 @@ 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 +#: report/templates/report/inventree_purchase_order_report.html:31 +#: report/templates/report/inventree_sales_order_report.html:31 #: templates/js/translated/order.js:327 -#: templates/js/translated/purchase_order.js:2126 -#: templates/js/translated/sales_order.js:1847 +#: templates/js/translated/purchase_order.js:2125 +#: templates/js/translated/sales_order.js:1883 msgid "Total Price" msgstr "" -#: order/api.py:157 order/templates/order/order_base.html:118 +#: order/api.py:161 order/serializers.py:91 +#: order/templates/order/order_base.html:118 #: order/templates/order/return_order_base.html:113 -#: order/templates/order/sales_order_base.html:118 +#: order/templates/order/sales_order_base.html:122 msgid "Order Status" msgstr "" -#: order/api.py:161 templates/js/translated/table_filters.js:194 +#: order/api.py:165 templates/js/translated/table_filters.js:194 #: templates/js/translated/table_filters.js:779 msgid "Has Pricing" msgstr "" -#: order/api.py:236 +#: order/api.py:240 msgid "No matching purchase order found" msgstr "" -#: order/api.py:433 order/api.py:813 order/models.py:1382 order/models.py:1489 -#: order/models.py:1535 order/models.py:1649 order/models.py:1803 -#: order/models.py:2207 order/models.py:2258 -#: templates/js/translated/sales_order.js:1488 +#: order/api.py:437 order/api.py:817 order/models.py:1431 order/models.py:1540 +#: order/models.py:1586 order/models.py:1700 order/models.py:1854 +#: order/models.py:2267 order/models.py:2318 +#: templates/js/translated/sales_order.js:1524 msgid "Order" msgstr "" -#: order/api.py:437 order/api.py:834 +#: order/api.py:441 order/api.py:838 msgid "Order Complete" msgstr "" -#: order/api.py:458 +#: order/api.py:462 msgid "Order Pending" msgstr "" -#: order/api.py:1505 order/models.py:1383 order/models.py:1490 -#: order/templates/order/order_base.html:9 +#: order/api.py:1509 order/models.py:380 order/models.py:1432 +#: order/models.py:1541 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 +#: report/templates/report/inventree_purchase_order_report.html:14 +#: stock/serializers.py:119 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 +#: templates/js/translated/purchase_order.js:1673 +#: templates/js/translated/stock.js:2260 templates/js/translated/stock.js:2907 msgid "Purchase Order" msgstr "" -#: order/api.py:1509 order/models.py:2208 order/models.py:2259 -#: order/templates/order/return_order_base.html:9 +#: order/api.py:1513 order/models.py:2017 order/models.py:2268 +#: order/models.py:2319 order/templates/order/return_order_base.html:9 #: order/templates/order/return_order_base.html:28 -#: report/templates/report/inventree_return_order_report_base.html:13 -#: templates/js/translated/return_order.js:281 +#: report/templates/report/inventree_return_order_report.html:13 +#: templates/js/translated/return_order.js:280 #: templates/js/translated/stock.js:2941 msgid "Return Order" msgstr "" @@ -4976,517 +4778,573 @@ msgstr "" msgid "Currency for this order (leave blank to use company default)" msgstr "" -#: order/models.py:246 +#: order/models.py:247 msgid "Contact does not match selected company" msgstr "" -#: order/models.py:278 +#: order/models.py:290 msgid "Order description (optional)" msgstr "" -#: order/models.py:287 +#: order/models.py:299 msgid "Select project code for this order" msgstr "" -#: order/models.py:291 order/models.py:1288 order/models.py:1702 +#: order/models.py:303 order/models.py:1337 order/models.py:1753 msgid "Link to external page" msgstr "" -#: order/models.py:299 +#: order/models.py:311 msgid "Expected date for order delivery. Order will be overdue after this date." msgstr "" -#: order/models.py:313 +#: order/models.py:325 msgid "Created By" msgstr "" -#: order/models.py:321 +#: order/models.py:333 msgid "User or group responsible for this order" msgstr "" -#: order/models.py:332 +#: order/models.py:344 msgid "Point of contact for this order" msgstr "" -#: order/models.py:342 +#: order/models.py:354 msgid "Company address for this order" msgstr "" -#: order/models.py:443 order/models.py:899 +#: order/models.py:464 order/models.py:929 msgid "Order reference" msgstr "" -#: order/models.py:451 order/models.py:923 +#: order/models.py:472 order/models.py:953 msgid "Purchase order status" msgstr "" -#: order/models.py:466 +#: order/models.py:487 msgid "Company from which the items are being ordered" msgstr "" -#: order/models.py:477 order/templates/order/order_base.html:148 -#: templates/js/translated/purchase_order.js:1703 +#: order/models.py:498 order/templates/order/order_base.html:148 +#: templates/js/translated/purchase_order.js:1702 msgid "Supplier Reference" msgstr "" -#: order/models.py:478 +#: order/models.py:499 msgid "Supplier order reference code" msgstr "" -#: order/models.py:487 +#: order/models.py:508 msgid "received by" msgstr "" -#: order/models.py:493 order/models.py:2034 +#: order/models.py:514 order/models.py:2094 msgid "Issue Date" msgstr "" -#: order/models.py:494 order/models.py:2035 +#: order/models.py:515 order/models.py:2095 msgid "Date order was issued" msgstr "" -#: order/models.py:501 order/models.py:2042 +#: order/models.py:522 order/models.py:2102 msgid "Date order was completed" msgstr "" -#: order/models.py:545 +#: order/models.py:566 msgid "Part supplier must match PO supplier" msgstr "" -#: order/models.py:739 +#: order/models.py:760 msgid "Quantity must be a positive number" msgstr "" -#: order/models.py:911 +#: order/models.py:941 msgid "Company to which the items are being sold" msgstr "" -#: order/models.py:934 order/models.py:2027 +#: order/models.py:964 order/models.py:2087 msgid "Customer Reference " msgstr "" -#: order/models.py:935 order/models.py:2028 +#: order/models.py:965 order/models.py:2088 msgid "Customer order reference code" msgstr "" -#: order/models.py:939 order/models.py:1656 -#: templates/js/translated/sales_order.js:843 -#: templates/js/translated/sales_order.js:1024 +#: order/models.py:969 order/models.py:1707 +#: templates/js/translated/sales_order.js:879 +#: templates/js/translated/sales_order.js:1060 msgid "Shipment Date" msgstr "" -#: order/models.py:948 +#: order/models.py:978 msgid "shipped by" msgstr "" -#: order/models.py:999 -msgid "Order cannot be completed as no parts have been assigned" +#: order/models.py:1027 +msgid "Order is already complete" msgstr "" -#: order/models.py:1004 +#: order/models.py:1030 +msgid "Order is already cancelled" +msgstr "" + +#: order/models.py:1034 msgid "Only an open order can be marked as complete" msgstr "" -#: order/models.py:1008 templates/js/translated/sales_order.js:506 +#: order/models.py:1038 msgid "Order cannot be completed as there are incomplete shipments" msgstr "" -#: order/models.py:1013 +#: order/models.py:1043 msgid "Order cannot be completed as there are incomplete line items" msgstr "" -#: order/models.py:1260 +#: order/models.py:1309 msgid "Item quantity" msgstr "" -#: order/models.py:1277 +#: order/models.py:1326 msgid "Line item reference" msgstr "" -#: order/models.py:1284 +#: order/models.py:1333 msgid "Line item notes" msgstr "" -#: order/models.py:1296 +#: order/models.py:1345 msgid "Target date for this line item (leave blank to use the target date from the order)" msgstr "" -#: order/models.py:1317 +#: order/models.py:1366 msgid "Line item description (optional)" msgstr "" -#: order/models.py:1323 +#: order/models.py:1372 msgid "Context" msgstr "" -#: order/models.py:1324 +#: order/models.py:1373 msgid "Additional context for this line" msgstr "" -#: order/models.py:1334 +#: order/models.py:1383 msgid "Unit price" msgstr "" -#: order/models.py:1367 +#: order/models.py:1416 msgid "Supplier part must match supplier" msgstr "" -#: order/models.py:1374 +#: order/models.py:1423 msgid "deleted" msgstr "" -#: order/models.py:1402 +#: order/models.py:1451 msgid "Supplier part" msgstr "" -#: order/models.py:1409 order/templates/order/order_base.html:196 +#: order/models.py:1458 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/purchase_order.js:2169 +#: templates/js/translated/return_order.js:763 #: templates/js/translated/table_filters.js:120 #: templates/js/translated/table_filters.js:602 msgid "Received" msgstr "" -#: order/models.py:1410 +#: order/models.py:1459 msgid "Number of items received" msgstr "" -#: order/models.py:1418 stock/models.py:923 stock/serializers.py:400 +#: order/models.py:1467 stock/models.py:940 stock/serializers.py:529 #: stock/templates/stock/item_base.html:183 -#: templates/js/translated/stock.js:2310 +#: templates/js/translated/stock.js:2311 msgid "Purchase Price" msgstr "" -#: order/models.py:1419 +#: order/models.py:1468 msgid "Unit purchase price" msgstr "" -#: order/models.py:1434 +#: order/models.py:1483 msgid "Where does the Purchaser want this item to be stored?" msgstr "" -#: order/models.py:1523 +#: order/models.py:1574 msgid "Virtual part cannot be assigned to a sales order" msgstr "" -#: order/models.py:1528 +#: order/models.py:1579 msgid "Only salable parts can be assigned to a sales order" msgstr "" -#: order/models.py:1554 part/templates/part/part_pricing.html:107 +#: order/models.py:1605 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:1555 +#: order/models.py:1606 msgid "Unit sale price" msgstr "" -#: order/models.py:1565 +#: order/models.py:1615 order/status_codes.py:43 +#: templates/js/translated/sales_order.js:1559 +#: templates/js/translated/sales_order.js:1680 +#: templates/js/translated/sales_order.js:1993 +msgid "Shipped" +msgstr "Изпратено" + +#: order/models.py:1616 msgid "Shipped quantity" msgstr "" -#: order/models.py:1657 +#: order/models.py:1708 msgid "Date of shipment" msgstr "" -#: order/models.py:1663 templates/js/translated/sales_order.js:1036 +#: order/models.py:1714 templates/js/translated/sales_order.js:1072 msgid "Delivery Date" msgstr "" -#: order/models.py:1664 +#: order/models.py:1715 msgid "Date of delivery of shipment" msgstr "" -#: order/models.py:1672 +#: order/models.py:1723 msgid "Checked By" msgstr "" -#: order/models.py:1673 +#: order/models.py:1724 msgid "User who checked this shipment" msgstr "" -#: order/models.py:1680 order/models.py:1893 order/serializers.py:1350 -#: order/serializers.py:1460 templates/js/translated/model_renderers.js:448 +#: order/models.py:1731 order/models.py:1944 order/serializers.py:1354 +#: order/serializers.py:1464 templates/js/translated/model_renderers.js:454 msgid "Shipment" msgstr "" -#: order/models.py:1681 +#: order/models.py:1732 msgid "Shipment number" msgstr "" -#: order/models.py:1689 +#: order/models.py:1740 msgid "Tracking Number" msgstr "" -#: order/models.py:1690 +#: order/models.py:1741 msgid "Shipment tracking information" msgstr "" -#: order/models.py:1697 +#: order/models.py:1748 msgid "Invoice Number" msgstr "" -#: order/models.py:1698 +#: order/models.py:1749 msgid "Reference number for associated invoice" msgstr "" -#: order/models.py:1718 +#: order/models.py:1769 msgid "Shipment has already been sent" msgstr "" -#: order/models.py:1721 +#: order/models.py:1772 msgid "Shipment has no allocated stock items" msgstr "" -#: order/models.py:1839 order/models.py:1841 +#: order/models.py:1890 order/models.py:1892 msgid "Stock item has not been assigned" msgstr "" -#: order/models.py:1848 +#: order/models.py:1899 msgid "Cannot allocate stock item to a line with a different part" msgstr "" -#: order/models.py:1851 +#: order/models.py:1902 msgid "Cannot allocate stock to a line without a part" msgstr "" -#: order/models.py:1854 +#: order/models.py:1905 msgid "Allocation quantity cannot exceed stock quantity" msgstr "" -#: order/models.py:1873 order/serializers.py:1227 +#: order/models.py:1924 order/serializers.py:1231 msgid "Quantity must be 1 for serialized stock item" msgstr "" -#: order/models.py:1876 +#: order/models.py:1927 msgid "Sales order does not match shipment" msgstr "" -#: order/models.py:1877 plugin/base/barcodes/api.py:481 +#: order/models.py:1928 plugin/base/barcodes/api.py:481 msgid "Shipment does not match sales order" msgstr "" -#: order/models.py:1885 +#: order/models.py:1936 msgid "Line" msgstr "" -#: order/models.py:1894 +#: order/models.py:1945 msgid "Sales order shipment reference" msgstr "" -#: order/models.py:1907 order/models.py:2215 -#: templates/js/translated/return_order.js:722 +#: order/models.py:1958 order/models.py:2275 +#: templates/js/translated/return_order.js:721 msgid "Item" msgstr "" -#: order/models.py:1908 +#: order/models.py:1959 msgid "Select stock item to allocate" msgstr "" -#: order/models.py:1917 +#: order/models.py:1968 msgid "Enter stock allocation quantity" msgstr "" -#: order/models.py:1997 +#: order/models.py:2057 msgid "Return Order reference" msgstr "" -#: order/models.py:2009 +#: order/models.py:2069 msgid "Company from which items are being returned" msgstr "" -#: order/models.py:2021 +#: order/models.py:2081 msgid "Return order status" msgstr "" -#: order/models.py:2200 +#: order/models.py:2260 msgid "Only serialized items can be assigned to a Return Order" msgstr "" -#: order/models.py:2216 +#: order/models.py:2276 msgid "Select item to return from customer" msgstr "" -#: order/models.py:2222 +#: order/models.py:2282 msgid "Received Date" msgstr "" -#: order/models.py:2223 +#: order/models.py:2283 msgid "The date this this return item was received" msgstr "" -#: order/models.py:2234 templates/js/translated/return_order.js:733 +#: order/models.py:2294 templates/js/translated/return_order.js:732 #: templates/js/translated/table_filters.js:123 msgid "Outcome" msgstr "" -#: order/models.py:2235 +#: order/models.py:2295 msgid "Outcome for this line item" msgstr "" -#: order/models.py:2242 +#: order/models.py:2302 msgid "Cost associated with return or repair for this line item" msgstr "" -#: order/serializers.py:283 +#: order/serializers.py:80 order/templates/order/po_sidebar.html:5 +#: order/templates/order/return_order_detail.html:18 +#: order/templates/order/so_sidebar.html:5 +#: report/templates/report/inventree_purchase_order_report.html:22 +#: report/templates/report/inventree_return_order_report.html:19 +#: report/templates/report/inventree_sales_order_report.html:22 +msgid "Line Items" +msgstr "" + +#: order/serializers.py:84 +msgid "Completed Lines" +msgstr "" + +#: order/serializers.py:287 msgid "Order cannot be cancelled" msgstr "" -#: order/serializers.py:298 order/serializers.py:1243 +#: order/serializers.py:302 order/serializers.py:1247 msgid "Allow order to be closed with incomplete line items" msgstr "" -#: order/serializers.py:308 order/serializers.py:1253 +#: order/serializers.py:312 order/serializers.py:1257 msgid "Order has incomplete line items" msgstr "" -#: order/serializers.py:436 +#: order/serializers.py:440 msgid "Order is not open" msgstr "" -#: order/serializers.py:457 +#: order/serializers.py:461 msgid "Auto Pricing" msgstr "" -#: order/serializers.py:459 +#: order/serializers.py:463 msgid "Automatically calculate purchase price based on supplier part data" msgstr "" -#: order/serializers.py:469 +#: order/serializers.py:473 msgid "Purchase price currency" msgstr "" -#: order/serializers.py:475 +#: order/serializers.py:479 msgid "Merge Items" msgstr "" -#: order/serializers.py:477 +#: order/serializers.py:481 msgid "Merge items with the same part, destination and target date into one line item" msgstr "" -#: order/serializers.py:495 +#: order/serializers.py:499 msgid "Supplier part must be specified" msgstr "" -#: order/serializers.py:498 +#: order/serializers.py:502 msgid "Purchase order must be specified" msgstr "" -#: order/serializers.py:506 +#: order/serializers.py:510 msgid "Supplier must match purchase order" msgstr "" -#: order/serializers.py:507 +#: order/serializers.py:511 msgid "Purchase order must match supplier" msgstr "" -#: order/serializers.py:546 order/serializers.py:1321 +#: order/serializers.py:550 order/serializers.py:1325 msgid "Line Item" msgstr "" -#: order/serializers.py:552 +#: order/serializers.py:556 msgid "Line item does not match purchase order" msgstr "" -#: order/serializers.py:562 order/serializers.py:670 order/serializers.py:1676 +#: order/serializers.py:566 order/serializers.py:674 order/serializers.py:1680 msgid "Select destination location for received items" msgstr "" -#: order/serializers.py:578 templates/js/translated/purchase_order.js:1130 +#: order/serializers.py:582 templates/js/translated/purchase_order.js:1130 msgid "Enter batch code for incoming stock items" msgstr "" -#: order/serializers.py:586 templates/js/translated/purchase_order.js:1154 +#: order/serializers.py:590 templates/js/translated/purchase_order.js:1154 msgid "Enter serial numbers for incoming stock items" msgstr "" -#: order/serializers.py:597 templates/js/translated/barcode.js:52 +#: order/serializers.py:601 templates/js/translated/barcode.js:52 msgid "Barcode" msgstr "" -#: order/serializers.py:598 +#: order/serializers.py:602 msgid "Scanned barcode" msgstr "" -#: order/serializers.py:614 +#: order/serializers.py:618 msgid "Barcode is already in use" msgstr "" -#: order/serializers.py:638 +#: order/serializers.py:642 msgid "An integer quantity must be provided for trackable parts" msgstr "" -#: order/serializers.py:686 order/serializers.py:1692 +#: order/serializers.py:690 order/serializers.py:1696 msgid "Line items must be provided" msgstr "" -#: order/serializers.py:702 +#: order/serializers.py:706 msgid "Destination location must be specified" msgstr "" -#: order/serializers.py:713 +#: order/serializers.py:717 msgid "Supplied barcode values must be unique" msgstr "" -#: order/serializers.py:1070 +#: order/serializers.py:1074 msgid "Sale price currency" msgstr "" -#: order/serializers.py:1130 +#: order/serializers.py:1134 msgid "No shipment details provided" msgstr "" -#: order/serializers.py:1191 order/serializers.py:1330 +#: order/serializers.py:1195 order/serializers.py:1334 msgid "Line item is not associated with this order" msgstr "" -#: order/serializers.py:1210 +#: order/serializers.py:1214 msgid "Quantity must be positive" msgstr "" -#: order/serializers.py:1340 +#: order/serializers.py:1344 msgid "Enter serial numbers to allocate" msgstr "" -#: order/serializers.py:1362 order/serializers.py:1468 +#: order/serializers.py:1366 order/serializers.py:1472 msgid "Shipment has already been shipped" msgstr "" -#: order/serializers.py:1365 order/serializers.py:1471 +#: order/serializers.py:1369 order/serializers.py:1475 msgid "Shipment is not associated with this order" msgstr "" -#: order/serializers.py:1412 +#: order/serializers.py:1416 msgid "No match found for the following serial numbers" msgstr "" -#: order/serializers.py:1419 +#: order/serializers.py:1423 msgid "The following serial numbers are already allocated" msgstr "" -#: order/serializers.py:1646 +#: order/serializers.py:1650 msgid "Return order line item" msgstr "" -#: order/serializers.py:1652 +#: order/serializers.py:1656 msgid "Line item does not match return order" msgstr "" -#: order/serializers.py:1655 +#: order/serializers.py:1659 msgid "Line item has already been received" msgstr "" -#: order/serializers.py:1684 +#: order/serializers.py:1688 msgid "Items can only be received against orders which are in progress" msgstr "" -#: order/serializers.py:1762 +#: order/serializers.py:1766 msgid "Line price currency" msgstr "" +#: order/status_codes.py:16 order/status_codes.py:46 stock/status_codes.py:16 +msgid "Lost" +msgstr "Изгубен" + +#: order/status_codes.py:17 order/status_codes.py:47 stock/status_codes.py:22 +msgid "Returned" +msgstr "Върнат" + +#: order/status_codes.py:40 order/status_codes.py:67 +msgid "In Progress" +msgstr "Изпълнява се" + +#: order/status_codes.py:85 +msgid "Return" +msgstr "" + +#: order/status_codes.py:88 +msgid "Repair" +msgstr "" + +#: order/status_codes.py:91 +msgid "Replace" +msgstr "" + +#: order/status_codes.py:94 +msgid "Refund" +msgstr "" + +#: order/status_codes.py:97 +msgid "Reject" +msgstr "" + #: order/tasks.py:25 msgid "Overdue Purchase Order" msgstr "" @@ -5553,7 +5411,7 @@ msgstr "" #: order/templates/order/order_base.html:84 #: order/templates/order/return_order_base.html:87 -#: order/templates/order/sales_order_base.html:93 +#: order/templates/order/sales_order_base.html:97 msgid "Complete Order" msgstr "" @@ -5563,13 +5421,13 @@ msgstr "" #: order/templates/order/order_base.html:106 #: order/templates/order/return_order_base.html:101 -#: order/templates/order/sales_order_base.html:106 +#: order/templates/order/sales_order_base.html:110 msgid "Order Reference" msgstr "" #: order/templates/order/order_base.html:111 #: order/templates/order/return_order_base.html:106 -#: order/templates/order/sales_order_base.html:111 +#: order/templates/order/sales_order_base.html:115 msgid "Order Description" msgstr "" @@ -5578,19 +5436,19 @@ msgid "No suppplier information available" msgstr "" #: order/templates/order/order_base.html:154 -#: order/templates/order/sales_order_base.html:157 +#: order/templates/order/sales_order_base.html:161 msgid "Completed Line Items" msgstr "" #: order/templates/order/order_base.html:160 -#: order/templates/order/sales_order_base.html:163 -#: order/templates/order/sales_order_base.html:173 +#: order/templates/order/sales_order_base.html:167 +#: order/templates/order/sales_order_base.html:177 msgid "Incomplete" msgstr "" #: order/templates/order/order_base.html:179 #: order/templates/order/return_order_base.html:157 -#: report/templates/report/inventree_build_order_base.html:121 +#: report/templates/report/inventree_build_order_report.html:121 msgid "Issued" msgstr "" @@ -5600,15 +5458,15 @@ msgstr "" #: order/templates/order/order_base.html:228 #: order/templates/order/return_order_base.html:199 -#: order/templates/order/sales_order_base.html:239 +#: order/templates/order/sales_order_base.html:243 msgid "Total cost could not be calculated" msgstr "" -#: order/templates/order/order_base.html:318 +#: order/templates/order/order_base.html:314 msgid "Purchase Order QR Code" msgstr "" -#: order/templates/order/order_base.html:330 +#: order/templates/order/order_base.html:326 msgid "Link Barcode to Purchase Order" msgstr "" @@ -5662,11 +5520,11 @@ msgstr "" #: 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/build.js:1629 #: 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/return_order.js:505 +#: templates/js/translated/sales_order.js:1145 #: templates/js/translated/stock.js:714 templates/js/translated/stock.js:883 #: templates/patterns/wizard/match_fields.html:70 msgid "Remove row" @@ -5708,15 +5566,6 @@ msgstr "" 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 "" @@ -5729,7 +5578,7 @@ msgstr "" #: 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/return_order.js:458 #: templates/js/translated/sales_order.js:237 msgid "Add Line Item" msgstr "" @@ -5778,30 +5627,30 @@ 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 +#: order/templates/order/sales_order_base.html:155 +#: templates/js/translated/return_order.js:308 +#: templates/js/translated/sales_order.js:833 msgid "Customer Reference" msgstr "" #: order/templates/order/return_order_base.html:195 -#: order/templates/order/sales_order_base.html:235 +#: order/templates/order/sales_order_base.html:239 #: part/templates/part/part_pricing.html:32 #: part/templates/part/part_pricing.html:58 #: part/templates/part/part_pricing.html:99 #: part/templates/part/part_pricing.html:114 #: templates/js/translated/part.js:1072 -#: templates/js/translated/purchase_order.js:1753 -#: templates/js/translated/return_order.js:381 -#: templates/js/translated/sales_order.js:855 +#: templates/js/translated/purchase_order.js:1752 +#: templates/js/translated/return_order.js:380 +#: templates/js/translated/sales_order.js:891 msgid "Total Cost" msgstr "" -#: order/templates/order/return_order_base.html:263 +#: order/templates/order/return_order_base.html:259 msgid "Return Order QR Code" msgstr "" -#: order/templates/order/return_order_base.html:275 +#: order/templates/order/return_order_base.html:271 msgid "Link Barcode to Return Order" msgstr "" @@ -5819,25 +5668,30 @@ msgid "Ship Items" msgstr "" #: order/templates/order/sales_order_base.html:92 -#: templates/js/translated/sales_order.js:484 +#: order/templates/order/sales_order_base.html:93 +msgid "Mark As Shipped" +msgstr "" + +#: order/templates/order/sales_order_base.html:96 +#: templates/js/translated/sales_order.js:536 msgid "Complete Sales Order" msgstr "" -#: order/templates/order/sales_order_base.html:131 +#: order/templates/order/sales_order_base.html:135 msgid "This Sales Order has not been fully allocated" msgstr "" -#: order/templates/order/sales_order_base.html:169 +#: order/templates/order/sales_order_base.html:173 #: order/templates/order/sales_order_detail.html:99 #: order/templates/order/so_sidebar.html:11 msgid "Completed Shipments" msgstr "" -#: order/templates/order/sales_order_base.html:312 +#: order/templates/order/sales_order_base.html:321 msgid "Sales Order QR Code" msgstr "" -#: order/templates/order/sales_order_base.html:324 +#: order/templates/order/sales_order_base.html:333 msgid "Link Barcode to Sales Order" msgstr "" @@ -5881,12 +5735,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:3921 part/stocktake.py:218 +#: part/admin.py:39 part/admin.py:406 part/models.py:3964 part/stocktake.py:218 #: stock/admin.py:153 msgid "Part ID" msgstr "" -#: part/admin.py:41 part/admin.py:411 part/models.py:3922 part/stocktake.py:219 +#: part/admin.py:41 part/admin.py:413 part/models.py:3965 part/stocktake.py:219 #: stock/admin.py:157 msgid "Part Name" msgstr "" @@ -5895,20 +5749,20 @@ msgstr "" msgid "Part Description" msgstr "" -#: part/admin.py:48 part/models.py:904 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 +#: part/admin.py:48 part/models.py:947 part/templates/part/part_base.html:269 +#: report/templates/report/inventree_stock_location_report.html:103 +#: templates/js/translated/part.js:1226 templates/js/translated/part.js:2340 +#: templates/js/translated/stock.js:2036 msgid "IPN" msgstr "" -#: part/admin.py:50 part/models.py:913 part/templates/part/part_base.html:277 -#: report/models.py:195 templates/js/translated/part.js:1231 -#: templates/js/translated/part.js:2347 +#: part/admin.py:50 part/models.py:956 part/templates/part/part_base.html:277 +#: report/models.py:161 templates/js/translated/part.js:1231 +#: templates/js/translated/part.js:2346 msgid "Revision" msgstr "" -#: part/admin.py:53 part/admin.py:317 part/models.py:886 +#: part/admin.py:53 part/admin.py:319 part/models.py:929 #: part/templates/part/category.html:94 part/templates/part/part_base.html:298 msgid "Keywords" msgstr "" @@ -5917,15 +5771,15 @@ msgstr "" msgid "Part Image" msgstr "" -#: part/admin.py:63 part/admin.py:300 part/stocktake.py:221 +#: part/admin.py:63 part/admin.py:302 part/stocktake.py:221 msgid "Category ID" msgstr "" -#: part/admin.py:67 part/admin.py:302 part/stocktake.py:222 +#: part/admin.py:67 part/admin.py:304 part/stocktake.py:222 msgid "Category Name" msgstr "" -#: part/admin.py:71 part/admin.py:314 +#: part/admin.py:71 part/admin.py:316 msgid "Default Location ID" msgstr "" @@ -5933,11 +5787,11 @@ msgstr "" msgid "Default Supplier ID" msgstr "" -#: part/admin.py:81 part/models.py:872 part/templates/part/part_base.html:177 +#: part/admin.py:81 part/models.py:915 part/templates/part/part_base.html:177 msgid "Variant Of" msgstr "" -#: part/admin.py:84 part/models.py:1000 part/templates/part/part_base.html:203 +#: part/admin.py:84 part/models.py:1043 part/templates/part/part_base.html:203 msgid "Minimum Stock" msgstr "" @@ -5950,160 +5804,164 @@ msgstr "" msgid "Building" msgstr "" -#: part/admin.py:155 part/models.py:3080 part/models.py:3094 +#: part/admin.py:155 part/models.py:3123 part/models.py:3137 #: templates/js/translated/part.js:969 msgid "Minimum Cost" msgstr "" -#: part/admin.py:158 part/models.py:3087 part/models.py:3101 +#: part/admin.py:158 part/models.py:3130 part/models.py:3144 #: 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 +#: part/admin.py:308 part/admin.py:395 stock/admin.py:58 stock/admin.py:211 msgid "Parent ID" msgstr "" -#: part/admin.py:310 part/admin.py:400 stock/admin.py:62 +#: part/admin.py:312 part/admin.py:402 stock/admin.py:62 msgid "Parent Name" msgstr "" -#: part/admin.py:318 part/templates/part/category.html:88 +#: part/admin.py:320 part/templates/part/category.html:88 #: part/templates/part/category.html:101 msgid "Category Path" msgstr "" -#: part/admin.py:323 part/models.py:391 part/serializers.py:117 +#: part/admin.py:325 part/models.py:393 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/js/translated/part.js:2803 templates/js/translated/search.js:130 #: templates/navbar.html:24 users/models.py:203 msgid "Parts" msgstr "" -#: part/admin.py:384 +#: part/admin.py:386 msgid "BOM Level" msgstr "" -#: part/admin.py:387 +#: part/admin.py:389 msgid "BOM Item ID" msgstr "" -#: part/admin.py:397 +#: part/admin.py:399 msgid "Parent IPN" msgstr "" -#: part/admin.py:408 part/models.py:3923 +#: part/admin.py:410 part/models.py:3966 msgid "Part IPN" msgstr "" -#: part/admin.py:421 part/serializers.py:1261 +#: part/admin.py:423 part/serializers.py:1278 #: templates/js/translated/pricing.js:358 #: templates/js/translated/pricing.js:1024 msgid "Minimum Price" msgstr "" -#: part/admin.py:426 part/serializers.py:1276 +#: part/admin.py:428 part/serializers.py:1293 #: templates/js/translated/pricing.js:353 #: templates/js/translated/pricing.js:1032 msgid "Maximum Price" msgstr "" -#: part/api.py:119 +#: part/api.py:110 msgid "Starred" msgstr "" -#: part/api.py:121 +#: part/api.py:112 msgid "Filter by starred categories" msgstr "" -#: part/api.py:138 stock/api.py:284 +#: part/api.py:129 stock/api.py:318 msgid "Depth" msgstr "" -#: part/api.py:138 +#: part/api.py:129 msgid "Filter by category depth" msgstr "" -#: part/api.py:156 stock/api.py:302 +#: part/api.py:147 stock/api.py:336 msgid "Cascade" msgstr "" -#: part/api.py:158 +#: part/api.py:149 msgid "Include sub-categories in filtered results" msgstr "" -#: part/api.py:178 +#: part/api.py:169 msgid "Parent" msgstr "" -#: part/api.py:180 +#: part/api.py:171 msgid "Filter by parent category" msgstr "" -#: part/api.py:213 +#: part/api.py:204 msgid "Exclude Tree" msgstr "" -#: part/api.py:215 +#: part/api.py:206 msgid "Exclude sub-categories under the specified category" msgstr "" -#: part/api.py:461 +#: part/api.py:455 msgid "Has Results" msgstr "" -#: part/api.py:628 +#: part/api.py:622 msgid "Incoming Purchase Order" msgstr "" -#: part/api.py:646 +#: part/api.py:640 msgid "Outgoing Sales Order" msgstr "" -#: part/api.py:662 +#: part/api.py:656 msgid "Stock produced by Build Order" msgstr "" -#: part/api.py:746 +#: part/api.py:740 msgid "Stock required for Build Order" msgstr "" -#: part/api.py:893 +#: part/api.py:887 msgid "Valid" msgstr "" -#: part/api.py:894 +#: part/api.py:888 msgid "Validate entire Bill of Materials" msgstr "" -#: part/api.py:900 +#: part/api.py:894 msgid "This option must be selected" msgstr "" -#: part/api.py:1561 part/models.py:896 part/models.py:3386 part/models.py:3866 -#: part/serializers.py:406 part/serializers.py:1117 -#: part/templates/part/part_base.html:260 stock/api.py:745 +#: part/api.py:1111 +msgid "BOM Valid" +msgstr "" + +#: part/api.py:1515 part/models.py:939 part/models.py:3429 part/models.py:3909 +#: part/serializers.py:406 part/serializers.py:1134 +#: part/templates/part/part_base.html:260 stock/api.py:781 #: templates/InvenTree/settings/settings_staff_js.html:300 #: templates/js/translated/notification.js:60 -#: templates/js/translated/part.js:2377 +#: templates/js/translated/part.js:2376 msgid "Category" msgstr "" -#: part/api.py:1849 +#: part/api.py:1803 msgid "Uses" msgstr "" -#: part/bom.py:170 part/models.py:101 part/models.py:939 +#: part/bom.py:170 part/models.py:102 part/models.py:982 #: part/templates/part/category.html:116 part/templates/part/part_base.html:367 msgid "Default Location" msgstr "" -#: part/bom.py:171 part/serializers.py:822 +#: part/bom.py:171 part/serializers.py:837 #: templates/email/low_stock_notification.html:16 msgid "Total Stock" msgstr "Цялостна наличност" @@ -6112,698 +5970,712 @@ msgstr "Цялостна наличност" msgid "Input quantity for price calculation" msgstr "" -#: part/models.py:82 part/models.py:3867 part/templates/part/category.html:16 +#: part/models.py:83 part/models.py:3910 part/templates/part/category.html:16 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "" -#: part/models.py:83 part/templates/part/category.html:136 +#: part/models.py:84 part/templates/part/category.html:136 #: templates/InvenTree/search.html:97 templates/js/translated/search.js:158 #: users/models.py:202 msgid "Part Categories" msgstr "" -#: part/models.py:102 +#: part/models.py:103 msgid "Default location for parts in this category" msgstr "" -#: part/models.py:107 stock/models.py:165 templates/js/translated/part.js:2810 +#: part/models.py:108 stock/models.py:173 templates/js/translated/part.js:2809 #: 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:109 +#: part/models.py:110 msgid "Parts may not be directly assigned to a structural category, but may be assigned to child categories." msgstr "" -#: part/models.py:118 +#: part/models.py:119 msgid "Default keywords" msgstr "" -#: part/models.py:119 +#: part/models.py:120 msgid "Default keywords for parts in this category" msgstr "" -#: part/models.py:125 stock/models.py:89 stock/models.py:148 +#: part/models.py:126 stock/models.py:85 stock/models.py:156 #: templates/InvenTree/settings/settings_staff_js.html:456 msgid "Icon" msgstr "" -#: part/models.py:126 stock/models.py:149 +#: part/models.py:127 stock/models.py:157 msgid "Icon (optional)" msgstr "" -#: part/models.py:148 +#: part/models.py:149 msgid "You cannot make this part category structural because some parts are already assigned to it!" msgstr "" -#: part/models.py:484 +#: part/models.py:482 +msgid "Cannot delete this part as it is still active" +msgstr "" + +#: part/models.py:489 +msgid "Cannot delete this part as it is used in an assembly" +msgstr "" + +#: part/models.py:527 msgid "Invalid choice for parent part" msgstr "" -#: part/models.py:532 part/models.py:539 +#: part/models.py:575 part/models.py:582 #, python-brace-format msgid "Part '{self}' cannot be used in BOM for '{parent}' (recursive)" msgstr "" -#: part/models.py:551 +#: part/models.py:594 #, python-brace-format msgid "Part '{parent}' is used in BOM for '{self}' (recursive)" msgstr "" -#: part/models.py:616 +#: part/models.py:659 #, python-brace-format msgid "IPN must match regex pattern {pattern}" msgstr "" -#: part/models.py:696 +#: part/models.py:739 msgid "Stock item with this serial number already exists" msgstr "" -#: part/models.py:801 +#: part/models.py:844 msgid "Duplicate IPN not allowed in part settings" msgstr "" -#: part/models.py:811 +#: part/models.py:854 msgid "Part with this Name, IPN and Revision already exists." msgstr "" -#: part/models.py:826 +#: part/models.py:869 msgid "Parts cannot be assigned to structural part categories!" msgstr "" -#: part/models.py:855 part/models.py:3922 +#: part/models.py:898 part/models.py:3965 msgid "Part name" msgstr "" -#: part/models.py:860 +#: part/models.py:903 msgid "Is Template" msgstr "" -#: part/models.py:861 +#: part/models.py:904 msgid "Is this part a template part?" msgstr "" -#: part/models.py:871 +#: part/models.py:914 msgid "Is this part a variant of another part?" msgstr "" -#: part/models.py:879 +#: part/models.py:922 msgid "Part description (optional)" msgstr "" -#: part/models.py:887 +#: part/models.py:930 msgid "Part keywords to improve visibility in search results" msgstr "" -#: part/models.py:897 +#: part/models.py:940 msgid "Part category" msgstr "" -#: part/models.py:905 +#: part/models.py:948 msgid "Internal Part Number" msgstr "" -#: part/models.py:912 +#: part/models.py:955 msgid "Part revision or version number" msgstr "" -#: part/models.py:937 +#: part/models.py:980 msgid "Where is this item normally stored?" msgstr "" -#: part/models.py:983 part/templates/part/part_base.html:376 +#: part/models.py:1026 part/templates/part/part_base.html:376 msgid "Default Supplier" msgstr "" -#: part/models.py:984 +#: part/models.py:1027 msgid "Default supplier part" msgstr "" -#: part/models.py:991 +#: part/models.py:1034 msgid "Default Expiry" msgstr "" -#: part/models.py:992 +#: part/models.py:1035 msgid "Expiry time (in days) for stock items of this part" msgstr "" -#: part/models.py:1001 +#: part/models.py:1044 msgid "Minimum allowed stock level" msgstr "" -#: part/models.py:1010 +#: part/models.py:1053 msgid "Units of measure for this part" msgstr "" -#: part/models.py:1017 +#: part/models.py:1060 msgid "Can this part be built from other parts?" msgstr "" -#: part/models.py:1023 +#: part/models.py:1066 msgid "Can this part be used to build other parts?" msgstr "" -#: part/models.py:1029 +#: part/models.py:1072 msgid "Does this part have tracking for unique items?" msgstr "" -#: part/models.py:1035 +#: part/models.py:1078 msgid "Can this part be purchased from external suppliers?" msgstr "" -#: part/models.py:1041 +#: part/models.py:1084 msgid "Can this part be sold to customers?" msgstr "" -#: part/models.py:1045 +#: part/models.py:1088 msgid "Is this part active?" msgstr "" -#: part/models.py:1051 +#: part/models.py:1094 msgid "Is this a virtual part, such as a software product or license?" msgstr "" -#: part/models.py:1057 +#: part/models.py:1100 msgid "BOM checksum" msgstr "" -#: part/models.py:1058 +#: part/models.py:1101 msgid "Stored BOM checksum" msgstr "" -#: part/models.py:1066 +#: part/models.py:1109 msgid "BOM checked by" msgstr "" -#: part/models.py:1071 +#: part/models.py:1114 msgid "BOM checked date" msgstr "" -#: part/models.py:1087 +#: part/models.py:1130 msgid "Creation User" msgstr "" -#: part/models.py:1097 +#: part/models.py:1140 msgid "Owner responsible for this part" msgstr "" -#: part/models.py:1102 part/templates/part/part_base.html:339 +#: part/models.py:1145 part/templates/part/part_base.html:339 #: stock/templates/stock/item_base.html:451 -#: templates/js/translated/part.js:2471 +#: templates/js/translated/part.js:2470 msgid "Last Stocktake" msgstr "" -#: part/models.py:1975 +#: part/models.py:2018 msgid "Sell multiple" msgstr "" -#: part/models.py:2994 +#: part/models.py:3037 msgid "Currency used to cache pricing calculations" msgstr "" -#: part/models.py:3010 +#: part/models.py:3053 msgid "Minimum BOM Cost" msgstr "" -#: part/models.py:3011 +#: part/models.py:3054 msgid "Minimum cost of component parts" msgstr "" -#: part/models.py:3017 +#: part/models.py:3060 msgid "Maximum BOM Cost" msgstr "" -#: part/models.py:3018 +#: part/models.py:3061 msgid "Maximum cost of component parts" msgstr "" -#: part/models.py:3024 +#: part/models.py:3067 msgid "Minimum Purchase Cost" msgstr "" -#: part/models.py:3025 +#: part/models.py:3068 msgid "Minimum historical purchase cost" msgstr "" -#: part/models.py:3031 +#: part/models.py:3074 msgid "Maximum Purchase Cost" msgstr "" -#: part/models.py:3032 +#: part/models.py:3075 msgid "Maximum historical purchase cost" msgstr "" -#: part/models.py:3038 +#: part/models.py:3081 msgid "Minimum Internal Price" msgstr "" -#: part/models.py:3039 +#: part/models.py:3082 msgid "Minimum cost based on internal price breaks" msgstr "" -#: part/models.py:3045 +#: part/models.py:3088 msgid "Maximum Internal Price" msgstr "" -#: part/models.py:3046 +#: part/models.py:3089 msgid "Maximum cost based on internal price breaks" msgstr "" -#: part/models.py:3052 +#: part/models.py:3095 msgid "Minimum Supplier Price" msgstr "" -#: part/models.py:3053 +#: part/models.py:3096 msgid "Minimum price of part from external suppliers" msgstr "" -#: part/models.py:3059 +#: part/models.py:3102 msgid "Maximum Supplier Price" msgstr "" -#: part/models.py:3060 +#: part/models.py:3103 msgid "Maximum price of part from external suppliers" msgstr "" -#: part/models.py:3066 +#: part/models.py:3109 msgid "Minimum Variant Cost" msgstr "" -#: part/models.py:3067 +#: part/models.py:3110 msgid "Calculated minimum cost of variant parts" msgstr "" -#: part/models.py:3073 +#: part/models.py:3116 msgid "Maximum Variant Cost" msgstr "" -#: part/models.py:3074 +#: part/models.py:3117 msgid "Calculated maximum cost of variant parts" msgstr "" -#: part/models.py:3081 +#: part/models.py:3124 msgid "Override minimum cost" msgstr "" -#: part/models.py:3088 +#: part/models.py:3131 msgid "Override maximum cost" msgstr "" -#: part/models.py:3095 +#: part/models.py:3138 msgid "Calculated overall minimum cost" msgstr "" -#: part/models.py:3102 +#: part/models.py:3145 msgid "Calculated overall maximum cost" msgstr "" -#: part/models.py:3108 +#: part/models.py:3151 msgid "Minimum Sale Price" msgstr "" -#: part/models.py:3109 +#: part/models.py:3152 msgid "Minimum sale price based on price breaks" msgstr "" -#: part/models.py:3115 +#: part/models.py:3158 msgid "Maximum Sale Price" msgstr "" -#: part/models.py:3116 +#: part/models.py:3159 msgid "Maximum sale price based on price breaks" msgstr "" -#: part/models.py:3122 +#: part/models.py:3165 msgid "Minimum Sale Cost" msgstr "" -#: part/models.py:3123 +#: part/models.py:3166 msgid "Minimum historical sale price" msgstr "" -#: part/models.py:3129 +#: part/models.py:3172 msgid "Maximum Sale Cost" msgstr "" -#: part/models.py:3130 +#: part/models.py:3173 msgid "Maximum historical sale price" msgstr "" -#: part/models.py:3149 +#: part/models.py:3192 msgid "Part for stocktake" msgstr "" -#: part/models.py:3154 +#: part/models.py:3197 msgid "Item Count" msgstr "" -#: part/models.py:3155 +#: part/models.py:3198 msgid "Number of individual stock entries at time of stocktake" msgstr "" -#: part/models.py:3163 +#: part/models.py:3206 msgid "Total available stock at time of stocktake" msgstr "" -#: part/models.py:3167 part/models.py:3250 +#: part/models.py:3210 part/models.py:3293 #: part/templates/part/part_scheduling.html:13 -#: report/templates/report/inventree_test_report_base.html:106 +#: report/templates/report/inventree_test_report.html:106 #: templates/InvenTree/settings/plugin_settings.html:37 #: templates/InvenTree/settings/settings_staff_js.html:540 #: templates/js/translated/part.js:1085 templates/js/translated/pricing.js:826 #: templates/js/translated/pricing.js:950 -#: templates/js/translated/purchase_order.js:1732 +#: templates/js/translated/purchase_order.js:1731 #: templates/js/translated/stock.js:2821 msgid "Date" msgstr "" -#: part/models.py:3168 +#: part/models.py:3211 msgid "Date stocktake was performed" msgstr "" -#: part/models.py:3176 +#: part/models.py:3219 msgid "Additional notes" msgstr "" -#: part/models.py:3186 +#: part/models.py:3229 msgid "User who performed this stocktake" msgstr "" -#: part/models.py:3192 +#: part/models.py:3235 msgid "Minimum Stock Cost" msgstr "" -#: part/models.py:3193 +#: part/models.py:3236 msgid "Estimated minimum cost of stock on hand" msgstr "" -#: part/models.py:3199 +#: part/models.py:3242 msgid "Maximum Stock Cost" msgstr "" -#: part/models.py:3200 +#: part/models.py:3243 msgid "Estimated maximum cost of stock on hand" msgstr "" -#: part/models.py:3256 templates/InvenTree/settings/settings_staff_js.html:529 +#: part/models.py:3299 templates/InvenTree/settings/settings_staff_js.html:529 msgid "Report" msgstr "" -#: part/models.py:3257 +#: part/models.py:3300 msgid "Stocktake report file (generated internally)" msgstr "" -#: part/models.py:3262 templates/InvenTree/settings/settings_staff_js.html:536 +#: part/models.py:3305 templates/InvenTree/settings/settings_staff_js.html:536 msgid "Part Count" msgstr "" -#: part/models.py:3263 +#: part/models.py:3306 msgid "Number of parts covered by stocktake" msgstr "" -#: part/models.py:3273 +#: part/models.py:3316 msgid "User who requested this stocktake report" msgstr "" -#: part/models.py:3435 +#: part/models.py:3478 msgid "Invalid template name - must include at least one alphanumeric character" msgstr "" -#: part/models.py:3446 +#: part/models.py:3489 msgid "Test templates can only be created for trackable parts" msgstr "" -#: part/models.py:3457 +#: part/models.py:3500 msgid "Test template with the same key already exists for part" msgstr "" -#: part/models.py:3474 templates/js/translated/part.js:2879 +#: part/models.py:3517 templates/js/translated/part.js:2878 msgid "Test Name" msgstr "" -#: part/models.py:3475 +#: part/models.py:3518 msgid "Enter a name for the test" msgstr "" -#: part/models.py:3481 +#: part/models.py:3524 msgid "Test Key" msgstr "" -#: part/models.py:3482 +#: part/models.py:3525 msgid "Simplified key for the test" msgstr "" -#: part/models.py:3489 +#: part/models.py:3532 msgid "Test Description" msgstr "" -#: part/models.py:3490 +#: part/models.py:3533 msgid "Enter description for this test" msgstr "" -#: part/models.py:3494 +#: part/models.py:3537 report/models.py:208 +#: templates/js/translated/part.js:2899 +#: templates/js/translated/table_filters.js:481 +msgid "Enabled" +msgstr "" + +#: part/models.py:3537 msgid "Is this test enabled?" msgstr "" -#: part/models.py:3499 templates/js/translated/part.js:2908 +#: part/models.py:3542 templates/js/translated/part.js:2907 #: templates/js/translated/table_filters.js:477 msgid "Required" msgstr "" -#: part/models.py:3500 +#: part/models.py:3543 msgid "Is this test required to pass?" msgstr "" -#: part/models.py:3505 templates/js/translated/part.js:2916 +#: part/models.py:3548 templates/js/translated/part.js:2915 msgid "Requires Value" msgstr "" -#: part/models.py:3506 +#: part/models.py:3549 msgid "Does this test require a value when adding a test result?" msgstr "" -#: part/models.py:3511 templates/js/translated/part.js:2923 +#: part/models.py:3554 templates/js/translated/part.js:2922 msgid "Requires Attachment" msgstr "" -#: part/models.py:3513 +#: part/models.py:3556 msgid "Does this test require a file attachment when adding a test result?" msgstr "" -#: part/models.py:3560 +#: part/models.py:3603 msgid "Checkbox parameters cannot have units" msgstr "" -#: part/models.py:3565 +#: part/models.py:3608 msgid "Checkbox parameters cannot have choices" msgstr "" -#: part/models.py:3585 +#: part/models.py:3628 msgid "Choices must be unique" msgstr "" -#: part/models.py:3602 +#: part/models.py:3645 msgid "Parameter template name must be unique" msgstr "" -#: part/models.py:3617 +#: part/models.py:3660 msgid "Parameter Name" msgstr "" -#: part/models.py:3624 +#: part/models.py:3667 msgid "Physical units for this parameter" msgstr "" -#: part/models.py:3632 +#: part/models.py:3675 msgid "Parameter description" msgstr "" -#: part/models.py:3638 templates/js/translated/part.js:1627 +#: part/models.py:3681 templates/js/translated/part.js:1627 #: templates/js/translated/table_filters.js:825 msgid "Checkbox" msgstr "" -#: part/models.py:3639 +#: part/models.py:3682 msgid "Is this parameter a checkbox?" msgstr "" -#: part/models.py:3644 templates/js/translated/part.js:1636 +#: part/models.py:3687 templates/js/translated/part.js:1636 msgid "Choices" msgstr "" -#: part/models.py:3645 +#: part/models.py:3688 msgid "Valid choices for this parameter (comma-separated)" msgstr "" -#: part/models.py:3722 +#: part/models.py:3765 msgid "Invalid choice for parameter value" msgstr "" -#: part/models.py:3765 +#: part/models.py:3808 msgid "Parent Part" msgstr "" -#: part/models.py:3773 part/models.py:3874 part/models.py:3875 +#: part/models.py:3816 part/models.py:3917 part/models.py:3918 #: templates/InvenTree/settings/settings_staff_js.html:295 msgid "Parameter Template" msgstr "" -#: part/models.py:3778 +#: part/models.py:3821 msgid "Data" msgstr "" -#: part/models.py:3779 +#: part/models.py:3822 msgid "Parameter Value" msgstr "" -#: part/models.py:3881 templates/InvenTree/settings/settings_staff_js.html:304 +#: part/models.py:3924 templates/InvenTree/settings/settings_staff_js.html:304 msgid "Default Value" msgstr "" -#: part/models.py:3882 +#: part/models.py:3925 msgid "Default Parameter Value" msgstr "" -#: part/models.py:3920 +#: part/models.py:3963 msgid "Part ID or part name" msgstr "" -#: part/models.py:3921 +#: part/models.py:3964 msgid "Unique part ID value" msgstr "" -#: part/models.py:3923 +#: part/models.py:3966 msgid "Part IPN value" msgstr "" -#: part/models.py:3924 +#: part/models.py:3967 msgid "Level" msgstr "" -#: part/models.py:3924 +#: part/models.py:3967 msgid "BOM level" msgstr "" -#: part/models.py:4014 +#: part/models.py:4057 msgid "Select parent part" msgstr "" -#: part/models.py:4024 +#: part/models.py:4067 msgid "Sub part" msgstr "" -#: part/models.py:4025 +#: part/models.py:4068 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:4036 +#: part/models.py:4079 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:4042 +#: part/models.py:4085 msgid "This BOM item is optional" msgstr "" -#: part/models.py:4048 +#: part/models.py:4091 msgid "This BOM item is consumable (it is not tracked in build orders)" msgstr "" -#: part/models.py:4055 part/templates/part/upload_bom.html:55 +#: part/models.py:4098 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "" -#: part/models.py:4056 +#: part/models.py:4099 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:4063 +#: part/models.py:4106 msgid "BOM item reference" msgstr "" -#: part/models.py:4071 +#: part/models.py:4114 msgid "BOM item notes" msgstr "" -#: part/models.py:4077 +#: part/models.py:4120 msgid "Checksum" msgstr "" -#: part/models.py:4078 +#: part/models.py:4121 msgid "BOM line checksum" msgstr "" -#: part/models.py:4083 templates/js/translated/table_filters.js:174 +#: part/models.py:4126 templates/js/translated/table_filters.js:174 msgid "Validated" msgstr "" -#: part/models.py:4084 +#: part/models.py:4127 msgid "This BOM item has been validated" msgstr "" -#: part/models.py:4089 part/templates/part/upload_bom.html:57 +#: part/models.py:4132 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:4090 +#: part/models.py:4133 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "" -#: part/models.py:4095 part/templates/part/upload_bom.html:56 +#: part/models.py:4138 part/templates/part/upload_bom.html:56 #: templates/js/translated/bom.js:1046 msgid "Allow Variants" msgstr "" -#: part/models.py:4096 +#: part/models.py:4139 msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:4181 stock/models.py:647 +#: part/models.py:4224 stock/models.py:664 msgid "Quantity must be integer value for trackable parts" msgstr "" -#: part/models.py:4191 part/models.py:4193 +#: part/models.py:4234 part/models.py:4236 msgid "Sub part must be specified" msgstr "" -#: part/models.py:4333 +#: part/models.py:4376 msgid "BOM Item Substitute" msgstr "" -#: part/models.py:4354 +#: part/models.py:4397 msgid "Substitute part cannot be the same as the master part" msgstr "" -#: part/models.py:4367 +#: part/models.py:4410 msgid "Parent BOM item" msgstr "" -#: part/models.py:4375 +#: part/models.py:4418 msgid "Substitute part" msgstr "" -#: part/models.py:4391 +#: part/models.py:4434 msgid "Part 1" msgstr "" -#: part/models.py:4399 +#: part/models.py:4442 msgid "Part 2" msgstr "" -#: part/models.py:4400 +#: part/models.py:4443 msgid "Select Related Part" msgstr "" -#: part/models.py:4419 +#: part/models.py:4462 msgid "Part relationship cannot be created between a part and itself" msgstr "" -#: part/models.py:4424 +#: part/models.py:4467 msgid "Duplicate relationship already exists" msgstr "" @@ -6821,7 +6693,7 @@ msgstr "" msgid "Number of results recorded against this template" msgstr "" -#: part/serializers.py:210 part/serializers.py:228 stock/serializers.py:406 +#: part/serializers.py:210 part/serializers.py:228 stock/serializers.py:535 msgid "Purchase currency of this stock item" msgstr "" @@ -6837,299 +6709,299 @@ msgstr "" msgid "Select category" msgstr "" -#: part/serializers.py:437 +#: part/serializers.py:442 msgid "Original Part" msgstr "" -#: part/serializers.py:438 +#: part/serializers.py:443 msgid "Select original part to duplicate" msgstr "" -#: part/serializers.py:443 +#: part/serializers.py:448 msgid "Copy Image" msgstr "" -#: part/serializers.py:444 +#: part/serializers.py:449 msgid "Copy image from original part" msgstr "" -#: part/serializers.py:450 part/templates/part/detail.html:277 +#: part/serializers.py:455 part/templates/part/detail.html:277 msgid "Copy BOM" msgstr "" -#: part/serializers.py:451 +#: part/serializers.py:456 msgid "Copy bill of materials from original part" msgstr "" -#: part/serializers.py:457 +#: part/serializers.py:462 msgid "Copy Parameters" msgstr "" -#: part/serializers.py:458 +#: part/serializers.py:463 msgid "Copy parameter data from original part" msgstr "" -#: part/serializers.py:464 +#: part/serializers.py:469 msgid "Copy Notes" msgstr "" -#: part/serializers.py:465 +#: part/serializers.py:470 msgid "Copy notes from original part" msgstr "" -#: part/serializers.py:478 +#: part/serializers.py:488 msgid "Initial Stock Quantity" msgstr "" -#: part/serializers.py:480 +#: part/serializers.py:490 msgid "Specify initial stock quantity for this Part. If quantity is zero, no stock is added." msgstr "" -#: part/serializers.py:487 +#: part/serializers.py:497 msgid "Initial Stock Location" msgstr "" -#: part/serializers.py:488 +#: part/serializers.py:498 msgid "Specify initial stock location for this Part" msgstr "" -#: part/serializers.py:500 +#: part/serializers.py:515 msgid "Select supplier (or leave blank to skip)" msgstr "" -#: part/serializers.py:516 +#: part/serializers.py:531 msgid "Select manufacturer (or leave blank to skip)" msgstr "" -#: part/serializers.py:526 +#: part/serializers.py:541 msgid "Manufacturer part number" msgstr "" -#: part/serializers.py:533 +#: part/serializers.py:548 msgid "Selected company is not a valid supplier" msgstr "" -#: part/serializers.py:542 +#: part/serializers.py:557 msgid "Selected company is not a valid manufacturer" msgstr "" -#: part/serializers.py:553 +#: part/serializers.py:568 msgid "Manufacturer part matching this MPN already exists" msgstr "" -#: part/serializers.py:560 +#: part/serializers.py:575 msgid "Supplier part matching this SKU already exists" msgstr "" -#: part/serializers.py:823 +#: part/serializers.py:838 msgid "External Stock" msgstr "" -#: part/serializers.py:825 +#: part/serializers.py:840 msgid "Unallocated Stock" msgstr "" -#: part/serializers.py:828 +#: part/serializers.py:843 msgid "Variant Stock" msgstr "" -#: part/serializers.py:856 part/templates/part/copy_part.html:9 +#: part/serializers.py:873 part/templates/part/copy_part.html:9 #: templates/js/translated/part.js:471 msgid "Duplicate Part" msgstr "" -#: part/serializers.py:857 +#: part/serializers.py:874 msgid "Copy initial data from another Part" msgstr "" -#: part/serializers.py:863 templates/js/translated/part.js:102 +#: part/serializers.py:880 templates/js/translated/part.js:102 msgid "Initial Stock" msgstr "" -#: part/serializers.py:864 +#: part/serializers.py:881 msgid "Create Part with initial stock quantity" msgstr "" -#: part/serializers.py:870 +#: part/serializers.py:887 msgid "Supplier Information" msgstr "" -#: part/serializers.py:871 +#: part/serializers.py:888 msgid "Add initial supplier information for this part" msgstr "" -#: part/serializers.py:879 +#: part/serializers.py:896 msgid "Copy Category Parameters" msgstr "" -#: part/serializers.py:880 +#: part/serializers.py:897 msgid "Copy parameter templates from selected part category" msgstr "" -#: part/serializers.py:885 +#: part/serializers.py:902 msgid "Existing Image" msgstr "" -#: part/serializers.py:886 +#: part/serializers.py:903 msgid "Filename of an existing part image" msgstr "" -#: part/serializers.py:903 +#: part/serializers.py:920 msgid "Image file does not exist" msgstr "" -#: part/serializers.py:1109 +#: part/serializers.py:1126 msgid "Limit stocktake report to a particular part, and any variant parts" msgstr "" -#: part/serializers.py:1119 +#: part/serializers.py:1136 msgid "Limit stocktake report to a particular part category, and any child categories" msgstr "" -#: part/serializers.py:1129 +#: part/serializers.py:1146 msgid "Limit stocktake report to a particular stock location, and any child locations" msgstr "" -#: part/serializers.py:1135 +#: part/serializers.py:1152 msgid "Exclude External Stock" msgstr "" -#: part/serializers.py:1136 +#: part/serializers.py:1153 msgid "Exclude stock items in external locations" msgstr "" -#: part/serializers.py:1141 +#: part/serializers.py:1158 msgid "Generate Report" msgstr "" -#: part/serializers.py:1142 +#: part/serializers.py:1159 msgid "Generate report file containing calculated stocktake data" msgstr "" -#: part/serializers.py:1147 +#: part/serializers.py:1164 msgid "Update Parts" msgstr "" -#: part/serializers.py:1148 +#: part/serializers.py:1165 msgid "Update specified parts with calculated stocktake data" msgstr "" -#: part/serializers.py:1156 +#: part/serializers.py:1173 msgid "Stocktake functionality is not enabled" msgstr "" -#: part/serializers.py:1262 +#: part/serializers.py:1279 msgid "Override calculated value for minimum price" msgstr "" -#: part/serializers.py:1269 +#: part/serializers.py:1286 msgid "Minimum price currency" msgstr "" -#: part/serializers.py:1277 +#: part/serializers.py:1294 msgid "Override calculated value for maximum price" msgstr "" -#: part/serializers.py:1284 +#: part/serializers.py:1301 msgid "Maximum price currency" msgstr "" -#: part/serializers.py:1313 +#: part/serializers.py:1330 msgid "Update" msgstr "" -#: part/serializers.py:1314 +#: part/serializers.py:1331 msgid "Update pricing for this part" msgstr "" -#: part/serializers.py:1337 +#: part/serializers.py:1354 #, python-brace-format msgid "Could not convert from provided currencies to {default_currency}" msgstr "" -#: part/serializers.py:1344 +#: part/serializers.py:1361 msgid "Minimum price must not be greater than maximum price" msgstr "" -#: part/serializers.py:1347 +#: part/serializers.py:1364 msgid "Maximum price must not be less than minimum price" msgstr "" -#: part/serializers.py:1714 +#: part/serializers.py:1731 msgid "Select part to copy BOM from" msgstr "" -#: part/serializers.py:1722 +#: part/serializers.py:1739 msgid "Remove Existing Data" msgstr "" -#: part/serializers.py:1723 +#: part/serializers.py:1740 msgid "Remove existing BOM items before copying" msgstr "" -#: part/serializers.py:1728 +#: part/serializers.py:1745 msgid "Include Inherited" msgstr "" -#: part/serializers.py:1729 +#: part/serializers.py:1746 msgid "Include BOM items which are inherited from templated parts" msgstr "" -#: part/serializers.py:1734 +#: part/serializers.py:1751 msgid "Skip Invalid Rows" msgstr "" -#: part/serializers.py:1735 +#: part/serializers.py:1752 msgid "Enable this option to skip invalid rows" msgstr "" -#: part/serializers.py:1740 +#: part/serializers.py:1757 msgid "Copy Substitute Parts" msgstr "" -#: part/serializers.py:1741 +#: part/serializers.py:1758 msgid "Copy substitute parts when duplicate BOM items" msgstr "" -#: part/serializers.py:1775 +#: part/serializers.py:1792 msgid "Clear Existing BOM" msgstr "" -#: part/serializers.py:1776 +#: part/serializers.py:1793 msgid "Delete existing BOM items before uploading" msgstr "" -#: part/serializers.py:1806 +#: part/serializers.py:1823 msgid "No part column specified" msgstr "" -#: part/serializers.py:1850 +#: part/serializers.py:1867 msgid "Multiple matching parts found" msgstr "" -#: part/serializers.py:1853 +#: part/serializers.py:1870 msgid "No matching part found" msgstr "" -#: part/serializers.py:1856 +#: part/serializers.py:1873 msgid "Part is not designated as a component" msgstr "" -#: part/serializers.py:1865 +#: part/serializers.py:1882 msgid "Quantity not provided" msgstr "" -#: part/serializers.py:1873 +#: part/serializers.py:1890 msgid "Invalid quantity" msgstr "" -#: part/serializers.py:1894 +#: part/serializers.py:1911 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 +#: templates/js/translated/purchase_order.js:2084 msgid "Total Quantity" msgstr "" @@ -7281,7 +7153,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:2215 users/models.py:204 +#: templates/js/translated/stock.js:2216 users/models.py:204 msgid "Stocktake" msgstr "" @@ -7379,15 +7251,15 @@ msgstr "" msgid "Part Manufacturers" msgstr "" -#: part/templates/part/detail.html:659 +#: part/templates/part/detail.html:655 msgid "Related Part" msgstr "" -#: part/templates/part/detail.html:667 +#: part/templates/part/detail.html:663 msgid "Add Related Part" msgstr "" -#: part/templates/part/detail.html:752 +#: part/templates/part/detail.html:748 msgid "Add Test Result Template" msgstr "" @@ -7446,7 +7318,7 @@ msgstr "" #: part/templates/part/part_base.html:52 #: stock/templates/stock/item_base.html:62 -#: stock/templates/stock/location.html:74 +#: stock/templates/stock/location.html:74 templates/js/translated/label.js:143 msgid "Print Label" msgstr "" @@ -7468,7 +7340,7 @@ msgstr "" msgid "Transfer part stock" msgstr "" -#: part/templates/part/part_base.html:91 templates/js/translated/part.js:2293 +#: part/templates/part/part_base.html:91 templates/js/translated/part.js:2292 msgid "Part actions" msgstr "" @@ -7517,7 +7389,7 @@ msgid "Part is virtual (not a physical part)" msgstr "" #: part/templates/part/part_base.html:163 -#: part/templates/part/part_base.html:682 +#: part/templates/part/part_base.html:681 msgid "Show Part Details" msgstr "" @@ -7540,7 +7412,7 @@ msgid "Minimum stock level" msgstr "" #: part/templates/part/part_base.html:322 templates/js/translated/bom.js:1071 -#: templates/js/translated/part.js:1264 templates/js/translated/part.js:2444 +#: templates/js/translated/part.js:1264 templates/js/translated/part.js:2443 #: templates/js/translated/pricing.js:391 #: templates/js/translated/pricing.js:1054 msgid "Price Range" @@ -7563,19 +7435,19 @@ msgstr "" msgid "Link Barcode to Part" msgstr "" -#: part/templates/part/part_base.html:512 +#: part/templates/part/part_base.html:511 msgid "Calculate" msgstr "" -#: part/templates/part/part_base.html:529 +#: part/templates/part/part_base.html:528 msgid "Remove associated image from this part" msgstr "" -#: part/templates/part/part_base.html:580 +#: part/templates/part/part_base.html:579 msgid "No matching images found" msgstr "" -#: part/templates/part/part_base.html:676 +#: part/templates/part/part_base.html:675 msgid "Hide Part Details" msgstr "" @@ -7634,8 +7506,8 @@ msgstr "" #: 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 +#: templates/js/translated/part.js:2391 templates/js/translated/stock.js:1059 +#: templates/js/translated/stock.js:2070 templates/navbar.html:31 msgid "Stock" msgstr "Наличност" @@ -7681,7 +7553,7 @@ msgstr "" #: stock/templates/stock/item_base.html:446 #: templates/js/translated/company.js:1703 #: templates/js/translated/company.js:1713 -#: templates/js/translated/stock.js:2245 +#: templates/js/translated/stock.js:2246 msgid "Last Updated" msgstr "" @@ -7753,7 +7625,7 @@ msgid "Update Pricing" msgstr "" #: part/templates/part/stock_count.html:7 -#: templates/js/translated/model_renderers.js:221 +#: templates/js/translated/model_renderers.js:227 #: templates/js/translated/part.js:704 templates/js/translated/part.js:2140 #: templates/js/translated/part.js:2142 msgid "No Stock" @@ -7833,7 +7705,7 @@ msgstr "" msgid "Part Pricing" msgstr "" -#: plugin/api.py:168 +#: plugin/api.py:170 msgid "Plugin cannot be deleted as it is currently active" msgstr "" @@ -7899,8 +7771,8 @@ msgstr "" 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 +#: plugin/base/barcodes/api.py:550 templates/js/translated/build.js:2589 +#: templates/js/translated/sales_order.js:1953 msgid "Insufficient stock available" msgstr "" @@ -7994,20 +7866,20 @@ msgstr "" msgid "Quantity to allocate" msgstr "" -#: plugin/base/label/label.py:39 +#: plugin/base/label/label.py:39 templates/js/translated/label.js:155 msgid "Label printing failed" msgstr "" -#: plugin/base/label/mixins.py:63 +#: plugin/base/label/mixins.py:56 msgid "Error rendering label to PDF" msgstr "" -#: plugin/base/label/mixins.py:76 +#: plugin/base/label/mixins.py:70 msgid "Error rendering label to HTML" msgstr "" -#: plugin/base/label/mixins.py:111 -msgid "Error rendering label to PNG" +#: plugin/base/label/mixins.py:151 +msgid "No items provided to print" msgstr "" #: plugin/builtin/barcodes/inventree_barcode.py:25 @@ -8021,7 +7893,7 @@ 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_label.py:22 #: plugin/builtin/labels/inventree_machine.py:64 #: plugin/builtin/labels/label_sheet.py:63 #: plugin/builtin/suppliers/digikey.py:19 plugin/builtin/suppliers/lcsc.py:21 @@ -8075,19 +7947,19 @@ msgstr "" msgid "Default currency exchange integration" msgstr "" -#: plugin/builtin/labels/inventree_label.py:20 +#: plugin/builtin/labels/inventree_label.py:19 msgid "InvenTree PDF label printer" msgstr "" -#: plugin/builtin/labels/inventree_label.py:21 +#: plugin/builtin/labels/inventree_label.py:20 msgid "Provides native support for printing PDF labels" msgstr "" -#: plugin/builtin/labels/inventree_label.py:29 +#: plugin/builtin/labels/inventree_label.py:28 msgid "Debug mode" msgstr "" -#: plugin/builtin/labels/inventree_label.py:30 +#: plugin/builtin/labels/inventree_label.py:29 msgid "Enable debug mode - returns raw HTML instead of PDF" msgstr "" @@ -8099,11 +7971,11 @@ msgstr "" msgid "Provides support for printing using a machine" msgstr "" -#: plugin/builtin/labels/inventree_machine.py:150 +#: plugin/builtin/labels/inventree_machine.py:151 msgid "last used" msgstr "" -#: plugin/builtin/labels/inventree_machine.py:167 +#: plugin/builtin/labels/inventree_machine.py:168 msgid "Options" msgstr "" @@ -8127,7 +7999,7 @@ msgstr "" msgid "Print a border around each label" msgstr "" -#: plugin/builtin/labels/label_sheet.py:47 report/models.py:209 +#: plugin/builtin/labels/label_sheet.py:47 report/models.py:307 msgid "Landscape" msgstr "" @@ -8143,11 +8015,11 @@ msgstr "" msgid "Arrays multiple labels onto a single sheet" msgstr "" -#: plugin/builtin/labels/label_sheet.py:94 +#: plugin/builtin/labels/label_sheet.py:99 msgid "Label is too large for page size" msgstr "" -#: plugin/builtin/labels/label_sheet.py:128 +#: plugin/builtin/labels/label_sheet.py:133 msgid "No labels were generated" msgstr "" @@ -8240,61 +8112,62 @@ msgstr "" msgid "Uninstalled plugin successfully" msgstr "" -#: plugin/models.py:30 +#: plugin/models.py:35 msgid "Plugin Configuration" msgstr "" -#: plugin/models.py:31 +#: plugin/models.py:36 msgid "Plugin Configurations" msgstr "" -#: plugin/models.py:34 users/models.py:100 +#: plugin/models.py:42 users/models.py:100 msgid "Key" msgstr "" -#: plugin/models.py:34 +#: plugin/models.py:43 msgid "Key of plugin" msgstr "" -#: plugin/models.py:42 +#: plugin/models.py:51 msgid "PluginName of the plugin" msgstr "" -#: plugin/models.py:49 plugin/serializers.py:90 +#: plugin/models.py:58 plugin/serializers.py:90 msgid "Package Name" msgstr "" -#: plugin/models.py:51 +#: plugin/models.py:60 msgid "Name of the installed package, if the plugin was installed via PIP" msgstr "" -#: plugin/models.py:56 +#: plugin/models.py:65 msgid "Is the plugin active" msgstr "" -#: plugin/models.py:147 templates/js/translated/table_filters.js:370 +#: plugin/models.py:156 templates/js/translated/table_filters.js:370 #: templates/js/translated/table_filters.js:504 msgid "Installed" msgstr "" -#: plugin/models.py:156 +#: plugin/models.py:165 msgid "Sample plugin" msgstr "" -#: plugin/models.py:164 +#: plugin/models.py:173 msgid "Builtin Plugin" msgstr "" -#: plugin/models.py:172 +#: plugin/models.py:181 msgid "Package Plugin" msgstr "" -#: plugin/models.py:196 templates/InvenTree/settings/plugin_settings.html:9 +#: plugin/models.py:205 report/models.py:474 +#: templates/InvenTree/settings/plugin_settings.html:9 #: templates/js/translated/plugin.js:51 msgid "Plugin" msgstr "" -#: plugin/models.py:243 +#: plugin/models.py:252 msgid "Method" msgstr "" @@ -8302,17 +8175,17 @@ msgstr "" msgid "No author found" msgstr "" -#: plugin/registry.py:588 +#: plugin/registry.py:597 #, python-brace-format msgid "Plugin '{p}' is not compatible with the current InvenTree version {v}" msgstr "" -#: plugin/registry.py:591 +#: plugin/registry.py:600 #, python-brace-format msgid "Plugin requires at least version {v}" msgstr "" -#: plugin/registry.py:593 +#: plugin/registry.py:602 #, python-brace-format msgid "Plugin requires at most version {v}" msgstr "" @@ -8395,279 +8268,363 @@ msgstr "" msgid "Either packagename of URL must be provided" msgstr "" -#: plugin/serializers.py:156 +#: plugin/serializers.py:161 msgid "Full reload" msgstr "" -#: plugin/serializers.py:157 +#: plugin/serializers.py:162 msgid "Perform a full reload of the plugin registry" msgstr "" -#: plugin/serializers.py:163 +#: plugin/serializers.py:168 msgid "Force reload" msgstr "" -#: plugin/serializers.py:165 +#: plugin/serializers.py:170 msgid "Force a reload of the plugin registry, even if it is already loaded" msgstr "" -#: plugin/serializers.py:172 +#: plugin/serializers.py:177 msgid "Collect plugins" msgstr "" -#: plugin/serializers.py:173 +#: plugin/serializers.py:178 msgid "Collect plugins and add them to the registry" msgstr "" -#: plugin/serializers.py:195 +#: plugin/serializers.py:205 msgid "Activate Plugin" msgstr "" -#: plugin/serializers.py:196 +#: plugin/serializers.py:206 msgid "Activate this plugin" msgstr "" -#: plugin/serializers.py:219 +#: plugin/serializers.py:234 msgid "Delete configuration" msgstr "" -#: plugin/serializers.py:220 +#: plugin/serializers.py:235 msgid "Delete the plugin configuration from the database" msgstr "" -#: report/api.py:158 +#: report/api.py:77 msgid "No valid objects provided to template" msgstr "" -#: report/api.py:197 report/api.py:234 +#: report/api.py:89 report/serializers.py:53 +msgid "Model Type" +msgstr "" + +#: report/api.py:92 report/models.py:438 report/serializers.py:98 +#: report/serializers.py:148 templates/js/translated/purchase_order.js:1747 +#: templates/js/translated/return_order.js:353 +#: templates/js/translated/sales_order.js:887 +#: templates/js/translated/sales_order.js:1047 +msgid "Items" +msgstr "" + +#: report/api.py:168 +msgid "Plugin not found" +msgstr "" + +#: report/api.py:170 +msgid "Plugin is not active" +msgstr "" + +#: report/api.py:172 +msgid "Plugin does not support label printing" +msgstr "" + +#: report/api.py:221 +msgid "Invalid label dimensions" +msgstr "" + +#: report/api.py:236 report/api.py:316 +msgid "No valid items provided to template" +msgstr "" + +#: report/api.py:271 +msgid "Error printing label" +msgstr "" + +#: report/api.py:362 report/api.py:398 #, 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 +#: report/helpers.py:41 msgid "A4" msgstr "" -#: report/helpers.py:16 +#: report/helpers.py:42 msgid "A3" msgstr "" -#: report/helpers.py:17 +#: report/helpers.py:43 msgid "Legal" msgstr "" -#: report/helpers.py:18 +#: report/helpers.py:44 msgid "Letter" msgstr "" -#: report/models.py:177 +#: report/models.py:118 +msgid "Template file with this name already exists" +msgstr "" + +#: report/models.py:150 msgid "Template name" msgstr "" -#: report/models.py:183 -msgid "Report template file" +#: report/models.py:156 +msgid "Template description" msgstr "" -#: report/models.py:190 -msgid "Report template description" +#: report/models.py:162 +msgid "Revision number (auto-increments)" msgstr "" -#: report/models.py:196 -msgid "Report revision number (auto-increments)" +#: report/models.py:202 +msgid "Filename Pattern" msgstr "" -#: report/models.py:204 +#: report/models.py:203 +msgid "Pattern for generating filenames" +msgstr "" + +#: report/models.py:208 +msgid "Template is enabled" +msgstr "" + +#: report/models.py:214 +msgid "Target model type for template" +msgstr "" + +#: report/models.py:234 +msgid "Filters" +msgstr "" + +#: report/models.py:235 +msgid "Template query filters (comma-separated list of key=value pairs)" +msgstr "" + +#: report/models.py:294 report/models.py:361 +msgid "Template file" +msgstr "" + +#: report/models.py:302 msgid "Page size for PDF reports" msgstr "" -#: report/models.py:210 +#: report/models.py:308 msgid "Render report in landscape orientation" msgstr "" -#: report/models.py:318 -msgid "Pattern for generating report filenames" +#: report/models.py:367 +msgid "Width [mm]" msgstr "" -#: report/models.py:325 -msgid "Report template is enabled" +#: report/models.py:368 +msgid "Label width, specified in mm" msgstr "" -#: report/models.py:347 -msgid "StockItem query filters (comma-separated list of key=value pairs)" +#: report/models.py:374 +msgid "Height [mm]" msgstr "" -#: report/models.py:354 -msgid "Include Installed Tests" +#: report/models.py:375 +msgid "Label height, specified in mm" msgstr "" -#: report/models.py:356 -msgid "Include test results for stock items installed inside assembled item" +#: report/models.py:438 +msgid "Number of items to process" msgstr "" -#: report/models.py:424 -msgid "Build Filters" +#: report/models.py:444 +msgid "Report generation is complete" msgstr "" -#: report/models.py:425 -msgid "Build query filters (comma-separated list of key=value pairs" +#: report/models.py:448 templates/js/translated/build.js:2177 +msgid "Progress" msgstr "" -#: report/models.py:464 -msgid "Part Filters" +#: report/models.py:448 +msgid "Report generation progress" msgstr "" -#: report/models.py:465 -msgid "Part query filters (comma-separated list of key=value pairs" +#: report/models.py:456 +msgid "Report Template" msgstr "" -#: report/models.py:497 -msgid "Purchase order query filters" +#: report/models.py:463 report/models.py:486 +msgid "Output File" msgstr "" -#: report/models.py:533 -msgid "Sales order query filters" +#: report/models.py:464 report/models.py:487 +msgid "Generated output file" msgstr "" -#: report/models.py:569 -msgid "Return order query filters" +#: report/models.py:475 +msgid "Label output plugin" msgstr "" -#: report/models.py:641 -msgid "Snippet file with this name already exists" +#: report/models.py:479 +msgid "Label Template" msgstr "" -#: report/models.py:648 +#: report/models.py:502 msgid "Snippet" msgstr "" -#: report/models.py:649 +#: report/models.py:503 msgid "Report snippet file" msgstr "" -#: report/models.py:656 +#: report/models.py:510 msgid "Snippet file description" msgstr "" -#: report/models.py:714 -msgid "Asset file with this name already exists" -msgstr "" - -#: report/models.py:722 +#: report/models.py:528 msgid "Asset" msgstr "" -#: report/models.py:723 +#: report/models.py:529 msgid "Report asset file" msgstr "" -#: report/models.py:730 +#: report/models.py:536 msgid "Asset file description" msgstr "" -#: report/models.py:752 -msgid "stock location query filters (comma-separated list of key=value pairs)" +#: report/serializers.py:91 +msgid "Select report template" +msgstr "" + +#: report/serializers.py:99 report/serializers.py:149 +msgid "List of item primary keys to include in the report" +msgstr "" + +#: report/serializers.py:132 +msgid "Select label template" +msgstr "" + +#: report/serializers.py:140 +msgid "Printing Plugin" +msgstr "" + +#: report/serializers.py:141 +msgid "Select plugin to use for label printing" +msgstr "" + +#: report/templates/label/part_label.html:31 +#: report/templates/label/stockitem_qr.html:21 +#: report/templates/label/stocklocation_qr.html:20 +#: templates/allauth_2fa/setup.html:18 +msgid "QR Code" +msgstr "" + +#: report/templates/label/part_label_code128.html:31 +#: report/templates/label/stocklocation_qr_and_text.html:31 +#: templates/qr_code.html:7 +msgid "QR code" msgstr "" #: report/templates/report/inventree_bill_of_materials_report.html:133 msgid "Materials needed" msgstr "" -#: report/templates/report/inventree_build_order_base.html:146 +#: report/templates/report/inventree_build_order_report.html:146 msgid "Required For" msgstr "" -#: report/templates/report/inventree_po_report_base.html:15 +#: report/templates/report/inventree_purchase_order_report.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 +#: report/templates/report/inventree_purchase_order_report.html:30 +#: report/templates/report/inventree_sales_order_report.html:30 #: templates/js/translated/order.js:316 templates/js/translated/pricing.js:527 #: templates/js/translated/pricing.js:596 #: templates/js/translated/pricing.js:834 -#: templates/js/translated/purchase_order.js:2116 -#: templates/js/translated/sales_order.js:1837 +#: templates/js/translated/purchase_order.js:2115 +#: templates/js/translated/sales_order.js:1873 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 +#: report/templates/report/inventree_purchase_order_report.html:55 +#: report/templates/report/inventree_return_order_report.html:48 +#: report/templates/report/inventree_sales_order_report.html:55 msgid "Extra Line Items" msgstr "" -#: report/templates/report/inventree_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 +#: report/templates/report/inventree_purchase_order_report.html:72 +#: report/templates/report/inventree_sales_order_report.html:72 +#: templates/js/translated/purchase_order.js:2017 +#: templates/js/translated/sales_order.js:1842 msgid "Total" msgstr "" -#: report/templates/report/inventree_return_order_report_base.html:25 -#: report/templates/report/inventree_test_report_base.html:88 -#: stock/models.py:809 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 +#: report/templates/report/inventree_return_order_report.html:25 +#: report/templates/report/inventree_test_report.html:88 stock/models.py:826 +#: stock/serializers.py:150 stock/templates/stock/item_base.html:311 +#: templates/js/translated/build.js:519 templates/js/translated/build.js:1367 +#: templates/js/translated/build.js:2355 +#: templates/js/translated/model_renderers.js:230 +#: templates/js/translated/return_order.js:539 +#: templates/js/translated/return_order.js:723 #: templates/js/translated/sales_order.js:315 -#: templates/js/translated/sales_order.js:1611 -#: templates/js/translated/sales_order.js:1696 +#: templates/js/translated/sales_order.js:1647 +#: templates/js/translated/sales_order.js:1732 #: templates/js/translated/stock.js:596 msgid "Serial Number" msgstr "" -#: report/templates/report/inventree_slr_report.html:97 +#: report/templates/report/inventree_stock_location_report.html:97 msgid "Stock location items" msgstr "" -#: report/templates/report/inventree_test_report_base.html:21 +#: report/templates/report/inventree_test_report.html:21 msgid "Stock Item Test Report" msgstr "" -#: report/templates/report/inventree_test_report_base.html:97 +#: report/templates/report/inventree_test_report.html:97 msgid "Test Results" msgstr "" -#: report/templates/report/inventree_test_report_base.html:102 -#: templates/js/translated/stock.js:1492 +#: report/templates/report/inventree_test_report.html:102 +#: templates/js/translated/stock.js:1495 msgid "Test" msgstr "" -#: report/templates/report/inventree_test_report_base.html:103 -#: stock/models.py:2430 +#: report/templates/report/inventree_test_report.html:103 stock/models.py:2423 msgid "Result" msgstr "" -#: report/templates/report/inventree_test_report_base.html:130 +#: report/templates/report/inventree_test_report.html:130 msgid "Pass" msgstr "" -#: report/templates/report/inventree_test_report_base.html:132 +#: report/templates/report/inventree_test_report.html:132 msgid "Fail" msgstr "" -#: report/templates/report/inventree_test_report_base.html:139 +#: report/templates/report/inventree_test_report.html:139 msgid "No result (required)" msgstr "" -#: report/templates/report/inventree_test_report_base.html:141 +#: report/templates/report/inventree_test_report.html:141 msgid "No result" msgstr "" -#: report/templates/report/inventree_test_report_base.html:154 +#: report/templates/report/inventree_test_report.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 +#: report/templates/report/inventree_test_report.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 "" @@ -8724,7 +8681,7 @@ msgstr "" msgid "Customer ID" msgstr "" -#: stock/admin.py:201 stock/models.py:789 +#: stock/admin.py:201 stock/models.py:806 #: stock/templates/stock/item_base.html:354 msgid "Installed In" msgstr "" @@ -8749,555 +8706,723 @@ msgstr "" msgid "Delete on Deplete" msgstr "" -#: stock/admin.py:256 stock/models.py:883 +#: stock/admin.py:256 stock/models.py:900 #: stock/templates/stock/item_base.html:433 -#: templates/js/translated/stock.js:2229 users/models.py:124 +#: templates/js/translated/stock.js:2230 users/models.py:124 msgid "Expiry Date" msgstr "" -#: stock/api.py:284 +#: stock/api.py:318 msgid "Filter by location depth" msgstr "" -#: stock/api.py:304 +#: stock/api.py:338 msgid "Include sub-locations in filtered results" msgstr "" -#: stock/api.py:325 +#: stock/api.py:359 msgid "Parent Location" msgstr "" -#: stock/api.py:326 +#: stock/api.py:360 msgid "Filter by parent location" msgstr "" -#: stock/api.py:579 templates/js/translated/table_filters.js:427 +#: stock/api.py:615 templates/js/translated/table_filters.js:427 msgid "External Location" msgstr "" -#: stock/api.py:767 +#: stock/api.py:803 msgid "Part Tree" msgstr "" -#: stock/api.py:797 +#: stock/api.py:833 msgid "Expiry date before" msgstr "" -#: stock/api.py:801 +#: stock/api.py:837 msgid "Expiry date after" msgstr "" -#: stock/api.py:804 stock/templates/stock/item_base.html:439 +#: stock/api.py:840 stock/templates/stock/item_base.html:439 #: templates/js/translated/table_filters.js:441 msgid "Stale" msgstr "" -#: stock/api.py:891 +#: stock/api.py:927 msgid "Quantity is required" msgstr "" -#: stock/api.py:897 +#: stock/api.py:933 msgid "Valid part must be supplied" msgstr "" -#: stock/api.py:928 +#: stock/api.py:964 msgid "The given supplier part does not exist" msgstr "" -#: stock/api.py:938 +#: stock/api.py:974 msgid "The supplier part has a pack size defined, but flag use_pack_size not set" msgstr "" -#: stock/api.py:969 +#: stock/api.py:1005 msgid "Serial numbers cannot be supplied for a non-trackable part" msgstr "" -#: stock/models.py:63 +#: stock/models.py:59 msgid "Stock Location type" msgstr "" -#: stock/models.py:64 +#: stock/models.py:60 msgid "Stock Location types" msgstr "" -#: stock/models.py:90 +#: stock/models.py:86 msgid "Default icon for all locations that have no icon set (optional)" msgstr "" -#: stock/models.py:125 stock/models.py:771 +#: stock/models.py:123 stock/models.py:788 #: 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 +#: stock/models.py:124 stock/templates/stock/location.html:186 #: templates/InvenTree/search.html:166 templates/js/translated/search.js:178 #: users/models.py:205 msgid "Stock Locations" msgstr "Места в склада" -#: stock/models.py:158 stock/models.py:932 +#: stock/models.py:166 stock/models.py:949 #: stock/templates/stock/item_base.html:247 msgid "Owner" msgstr "" -#: stock/models.py:159 stock/models.py:933 +#: stock/models.py:167 stock/models.py:950 msgid "Select Owner" msgstr "" -#: stock/models.py:167 +#: stock/models.py:175 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 +#: stock/models.py:182 templates/js/translated/stock.js:2781 #: templates/js/translated/table_filters.js:243 msgid "External" msgstr "" -#: stock/models.py:175 +#: stock/models.py:183 msgid "This is an external stock location" msgstr "" -#: stock/models.py:181 templates/js/translated/stock.js:2790 +#: stock/models.py:189 templates/js/translated/stock.js:2790 #: templates/js/translated/table_filters.js:246 msgid "Location type" msgstr "" -#: stock/models.py:185 +#: stock/models.py:193 msgid "Stock location type of this location" msgstr "" -#: stock/models.py:254 +#: stock/models.py:262 msgid "You cannot make this stock location structural because some stock items are already located into it!" msgstr "" -#: stock/models.py:626 +#: stock/models.py:643 msgid "Stock items cannot be located into structural stock locations!" msgstr "" -#: stock/models.py:653 stock/serializers.py:290 +#: stock/models.py:670 stock/serializers.py:419 msgid "Stock item cannot be created for virtual parts" msgstr "" -#: stock/models.py:670 +#: stock/models.py:687 #, python-brace-format msgid "Part type ('{self.supplier_part.part}') must be {self.part}" msgstr "" -#: stock/models.py:680 stock/models.py:693 +#: stock/models.py:697 stock/models.py:710 msgid "Quantity must be 1 for item with a serial number" msgstr "" -#: stock/models.py:683 +#: stock/models.py:700 msgid "Serial number cannot be set if quantity greater than 1" msgstr "" -#: stock/models.py:707 +#: stock/models.py:724 msgid "Item cannot belong to itself" msgstr "" -#: stock/models.py:712 +#: stock/models.py:729 msgid "Item must have a build reference if is_building=True" msgstr "" -#: stock/models.py:725 +#: stock/models.py:742 msgid "Build reference does not point to the same part object" msgstr "" -#: stock/models.py:741 +#: stock/models.py:758 msgid "Parent Stock Item" msgstr "" -#: stock/models.py:753 +#: stock/models.py:770 msgid "Base part" msgstr "" -#: stock/models.py:763 +#: stock/models.py:780 msgid "Select a matching supplier part for this stock item" msgstr "" -#: stock/models.py:775 +#: stock/models.py:792 msgid "Where is this stock item located?" msgstr "" -#: stock/models.py:783 stock/serializers.py:1351 +#: stock/models.py:800 stock/serializers.py:1480 msgid "Packaging this stock item is stored in" msgstr "" -#: stock/models.py:794 +#: stock/models.py:811 msgid "Is this item installed in another item?" msgstr "" -#: stock/models.py:813 +#: stock/models.py:830 msgid "Serial number for this item" msgstr "" -#: stock/models.py:827 stock/serializers.py:1334 +#: stock/models.py:844 stock/serializers.py:1463 msgid "Batch code for this stock item" msgstr "" -#: stock/models.py:832 +#: stock/models.py:849 msgid "Stock Quantity" msgstr "" -#: stock/models.py:842 +#: stock/models.py:859 msgid "Source Build" msgstr "" -#: stock/models.py:845 +#: stock/models.py:862 msgid "Build for this stock item" msgstr "" -#: stock/models.py:852 stock/templates/stock/item_base.html:363 +#: stock/models.py:869 stock/templates/stock/item_base.html:363 msgid "Consumed By" msgstr "" -#: stock/models.py:855 +#: stock/models.py:872 msgid "Build order which consumed this stock item" msgstr "" -#: stock/models.py:864 +#: stock/models.py:881 msgid "Source Purchase Order" msgstr "" -#: stock/models.py:868 +#: stock/models.py:885 msgid "Purchase order for this stock item" msgstr "" -#: stock/models.py:874 +#: stock/models.py:891 msgid "Destination Sales Order" msgstr "" -#: stock/models.py:885 +#: stock/models.py:902 msgid "Expiry date for stock item. Stock will be considered expired after this date" msgstr "" -#: stock/models.py:903 +#: stock/models.py:920 msgid "Delete on deplete" msgstr "" -#: stock/models.py:904 +#: stock/models.py:921 msgid "Delete this Stock Item when stock is depleted" msgstr "" -#: stock/models.py:924 +#: stock/models.py:941 msgid "Single unit purchase price at time of purchase" msgstr "" -#: stock/models.py:955 +#: stock/models.py:972 msgid "Converted to part" msgstr "" -#: stock/models.py:1465 +#: stock/models.py:1490 msgid "Part is not set as trackable" msgstr "" -#: stock/models.py:1471 +#: stock/models.py:1496 msgid "Quantity must be integer" msgstr "" -#: stock/models.py:1479 +#: stock/models.py:1504 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({self.quantity})" msgstr "" -#: stock/models.py:1485 +#: stock/models.py:1510 msgid "Serial numbers must be a list of integers" msgstr "" -#: stock/models.py:1490 +#: stock/models.py:1515 msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:1498 stock/serializers.py:529 +#: stock/models.py:1523 stock/serializers.py:658 msgid "Serial numbers already exist" msgstr "" -#: stock/models.py:1595 +#: stock/models.py:1620 msgid "Test template does not exist" msgstr "" -#: stock/models.py:1613 +#: stock/models.py:1638 msgid "Stock item has been assigned to a sales order" msgstr "" -#: stock/models.py:1617 +#: stock/models.py:1642 msgid "Stock item is installed in another item" msgstr "" -#: stock/models.py:1620 +#: stock/models.py:1645 msgid "Stock item contains other items" msgstr "" -#: stock/models.py:1623 +#: stock/models.py:1648 msgid "Stock item has been assigned to a customer" msgstr "" -#: stock/models.py:1626 +#: stock/models.py:1651 msgid "Stock item is currently in production" msgstr "" -#: stock/models.py:1629 +#: stock/models.py:1654 msgid "Serialized stock cannot be merged" msgstr "" -#: stock/models.py:1636 stock/serializers.py:1240 +#: stock/models.py:1661 stock/serializers.py:1369 msgid "Duplicate stock items" msgstr "" -#: stock/models.py:1640 +#: stock/models.py:1665 msgid "Stock items must refer to the same part" msgstr "" -#: stock/models.py:1648 +#: stock/models.py:1673 msgid "Stock items must refer to the same supplier part" msgstr "" -#: stock/models.py:1653 +#: stock/models.py:1678 msgid "Stock status codes must match" msgstr "" -#: stock/models.py:1870 +#: stock/models.py:1905 msgid "StockItem cannot be moved as it is not in stock" msgstr "" -#: stock/models.py:2333 +#: stock/models.py:2326 msgid "Entry notes" msgstr "" -#: stock/models.py:2398 +#: stock/models.py:2391 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:2403 +#: stock/models.py:2396 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:2430 +#: stock/models.py:2423 msgid "Test result" msgstr "" -#: stock/models.py:2437 +#: stock/models.py:2430 msgid "Test output value" msgstr "" -#: stock/models.py:2445 +#: stock/models.py:2438 msgid "Test result attachment" msgstr "" -#: stock/models.py:2449 +#: stock/models.py:2442 msgid "Test notes" msgstr "" -#: stock/models.py:2457 templates/js/translated/stock.js:1545 +#: stock/models.py:2450 templates/js/translated/stock.js:1548 msgid "Test station" msgstr "" -#: stock/models.py:2458 +#: stock/models.py:2451 msgid "The identifier of the test station where the test was performed" msgstr "" -#: stock/models.py:2464 +#: stock/models.py:2457 msgid "Started" msgstr "" -#: stock/models.py:2465 +#: stock/models.py:2458 msgid "The timestamp of the test start" msgstr "" -#: stock/models.py:2471 +#: stock/models.py:2464 msgid "Finished" msgstr "" -#: stock/models.py:2472 +#: stock/models.py:2465 msgid "The timestamp of the test finish" msgstr "" -#: stock/serializers.py:100 +#: stock/serializers.py:75 +msgid "Generated batch code" +msgstr "" + +#: stock/serializers.py:84 +msgid "Select build order" +msgstr "" + +#: stock/serializers.py:93 +msgid "Select stock item to generate batch code for" +msgstr "" + +#: stock/serializers.py:102 +msgid "Select location to generate batch code for" +msgstr "" + +#: stock/serializers.py:111 +msgid "Select part to generate batch code for" +msgstr "" + +#: stock/serializers.py:120 +msgid "Select purchase order" +msgstr "" + +#: stock/serializers.py:127 +msgid "Enter quantity for batch code" +msgstr "" + +#: stock/serializers.py:150 +msgid "Generated serial number" +msgstr "" + +#: stock/serializers.py:159 +msgid "Select part to generate serial number for" +msgstr "" + +#: stock/serializers.py:167 +msgid "Quantity of serial numbers to generate" +msgstr "" + +#: stock/serializers.py:229 msgid "Test template for this result" msgstr "" -#: stock/serializers.py:119 +#: stock/serializers.py:248 msgid "Template ID or test name must be provided" msgstr "" -#: stock/serializers.py:151 +#: stock/serializers.py:280 msgid "The test finished time cannot be earlier than the test started time" msgstr "" -#: stock/serializers.py:184 +#: stock/serializers.py:313 msgid "Serial number is too large" msgstr "" -#: stock/serializers.py:282 +#: stock/serializers.py:411 msgid "Use pack size when adding: the quantity defined is the number of packs" msgstr "" -#: stock/serializers.py:402 +#: stock/serializers.py:531 msgid "Purchase price of this stock item, per unit or pack" msgstr "" -#: stock/serializers.py:464 +#: stock/serializers.py:593 msgid "Enter number of stock items to serialize" msgstr "" -#: stock/serializers.py:477 +#: stock/serializers.py:606 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({q})" msgstr "" -#: stock/serializers.py:484 +#: stock/serializers.py:613 msgid "Enter serial numbers for new items" msgstr "" -#: stock/serializers.py:495 stock/serializers.py:1197 stock/serializers.py:1453 +#: stock/serializers.py:624 stock/serializers.py:1326 stock/serializers.py:1582 msgid "Destination stock location" msgstr "" -#: stock/serializers.py:502 +#: stock/serializers.py:631 msgid "Optional note field" msgstr "" -#: stock/serializers.py:512 +#: stock/serializers.py:641 msgid "Serial numbers cannot be assigned to this part" msgstr "" -#: stock/serializers.py:567 +#: stock/serializers.py:696 msgid "Select stock item to install" msgstr "" -#: stock/serializers.py:574 +#: stock/serializers.py:703 msgid "Quantity to Install" msgstr "" -#: stock/serializers.py:575 +#: stock/serializers.py:704 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 +#: stock/serializers.py:709 stock/serializers.py:789 stock/serializers.py:885 +#: stock/serializers.py:935 msgid "Add transaction note (optional)" msgstr "" -#: stock/serializers.py:588 +#: stock/serializers.py:717 msgid "Quantity to install must be at least 1" msgstr "" -#: stock/serializers.py:596 +#: stock/serializers.py:725 msgid "Stock item is unavailable" msgstr "" -#: stock/serializers.py:607 +#: stock/serializers.py:736 msgid "Selected part is not in the Bill of Materials" msgstr "" -#: stock/serializers.py:620 +#: stock/serializers.py:749 msgid "Quantity to install must not exceed available quantity" msgstr "" -#: stock/serializers.py:655 +#: stock/serializers.py:784 msgid "Destination location for uninstalled item" msgstr "" -#: stock/serializers.py:690 +#: stock/serializers.py:819 msgid "Select part to convert stock item into" msgstr "" -#: stock/serializers.py:703 +#: stock/serializers.py:832 msgid "Selected part is not a valid option for conversion" msgstr "" -#: stock/serializers.py:720 +#: stock/serializers.py:849 msgid "Cannot convert stock item with assigned SupplierPart" msgstr "" -#: stock/serializers.py:751 +#: stock/serializers.py:880 msgid "Destination location for returned item" msgstr "" -#: stock/serializers.py:788 +#: stock/serializers.py:917 msgid "Select stock items to change status" msgstr "" -#: stock/serializers.py:794 +#: stock/serializers.py:923 msgid "No stock items selected" msgstr "" -#: stock/serializers.py:890 stock/serializers.py:953 +#: stock/serializers.py:1019 stock/serializers.py:1082 #: stock/templates/stock/location.html:165 -#: stock/templates/stock/location.html:213 +#: stock/templates/stock/location.html:220 #: stock/templates/stock/location_sidebar.html:5 msgid "Sublocations" msgstr "" -#: stock/serializers.py:1069 +#: stock/serializers.py:1198 msgid "Part must be salable" msgstr "" -#: stock/serializers.py:1073 +#: stock/serializers.py:1202 msgid "Item is allocated to a sales order" msgstr "" -#: stock/serializers.py:1077 +#: stock/serializers.py:1206 msgid "Item is allocated to a build order" msgstr "" -#: stock/serializers.py:1101 +#: stock/serializers.py:1230 msgid "Customer to assign stock items" msgstr "" -#: stock/serializers.py:1107 +#: stock/serializers.py:1236 msgid "Selected company is not a customer" msgstr "" -#: stock/serializers.py:1115 +#: stock/serializers.py:1244 msgid "Stock assignment notes" msgstr "" -#: stock/serializers.py:1125 stock/serializers.py:1379 +#: stock/serializers.py:1254 stock/serializers.py:1508 msgid "A list of stock items must be provided" msgstr "" -#: stock/serializers.py:1204 +#: stock/serializers.py:1333 msgid "Stock merging notes" msgstr "" -#: stock/serializers.py:1209 +#: stock/serializers.py:1338 msgid "Allow mismatched suppliers" msgstr "" -#: stock/serializers.py:1210 +#: stock/serializers.py:1339 msgid "Allow stock items with different supplier parts to be merged" msgstr "" -#: stock/serializers.py:1215 +#: stock/serializers.py:1344 msgid "Allow mismatched status" msgstr "" -#: stock/serializers.py:1216 +#: stock/serializers.py:1345 msgid "Allow stock items with different status codes to be merged" msgstr "" -#: stock/serializers.py:1226 +#: stock/serializers.py:1355 msgid "At least two stock items must be provided" msgstr "" -#: stock/serializers.py:1293 +#: stock/serializers.py:1422 msgid "No Change" msgstr "" -#: stock/serializers.py:1322 +#: stock/serializers.py:1451 msgid "StockItem primary key value" msgstr "" -#: stock/serializers.py:1341 +#: stock/serializers.py:1470 msgid "Stock item status code" msgstr "" -#: stock/serializers.py:1369 +#: stock/serializers.py:1498 msgid "Stock transaction notes" msgstr "" +#: stock/status_codes.py:11 +msgid "OK" +msgstr "Да" + +#: stock/status_codes.py:12 +msgid "Attention needed" +msgstr "" + +#: stock/status_codes.py:13 +msgid "Damaged" +msgstr "" + +#: stock/status_codes.py:14 +msgid "Destroyed" +msgstr "" + +#: stock/status_codes.py:15 +msgid "Rejected" +msgstr "" + +#: stock/status_codes.py:19 +msgid "Quarantined" +msgstr "" + +#: stock/status_codes.py:40 +msgid "Legacy stock tracking entry" +msgstr "" + +#: stock/status_codes.py:42 templates/js/translated/stock.js:544 +msgid "Stock item created" +msgstr "" + +#: stock/status_codes.py:45 +msgid "Edited stock item" +msgstr "" + +#: stock/status_codes.py:46 +msgid "Assigned serial number" +msgstr "" + +#: stock/status_codes.py:49 +msgid "Stock counted" +msgstr "Наличността е преброена" + +#: stock/status_codes.py:50 +msgid "Stock manually added" +msgstr "" + +#: stock/status_codes.py:51 +msgid "Stock manually removed" +msgstr "" + +#: stock/status_codes.py:54 +msgid "Location changed" +msgstr "" + +#: stock/status_codes.py:55 +msgid "Stock updated" +msgstr "" + +#: stock/status_codes.py:58 +msgid "Installed into assembly" +msgstr "" + +#: stock/status_codes.py:59 +msgid "Removed from assembly" +msgstr "" + +#: stock/status_codes.py:61 +msgid "Installed component item" +msgstr "" + +#: stock/status_codes.py:62 +msgid "Removed component item" +msgstr "" + +#: stock/status_codes.py:65 +msgid "Split from parent item" +msgstr "" + +#: stock/status_codes.py:66 +msgid "Split child item" +msgstr "" + +#: stock/status_codes.py:69 templates/js/translated/stock.js:1858 +msgid "Merged stock items" +msgstr "" + +#: stock/status_codes.py:72 +msgid "Converted to variant" +msgstr "" + +#: stock/status_codes.py:75 +msgid "Build order output created" +msgstr "" + +#: stock/status_codes.py:76 +msgid "Build order output completed" +msgstr "" + +#: stock/status_codes.py:77 +msgid "Build order output rejected" +msgstr "" + +#: stock/status_codes.py:78 templates/js/translated/stock.js:1764 +msgid "Consumed by build order" +msgstr "" + +#: stock/status_codes.py:81 +msgid "Shipped against Sales Order" +msgstr "" + +#: stock/status_codes.py:84 +msgid "Received against Purchase Order" +msgstr "" + +#: stock/status_codes.py:87 +msgid "Returned against Return Order" +msgstr "" + +#: stock/status_codes.py:90 templates/js/translated/table_filters.js:375 +msgid "Sent to customer" +msgstr "" + +#: stock/status_codes.py:91 +msgid "Returned from customer" +msgstr "" + #: stock/templates/stock/item.html:17 msgid "Stock Tracking Information" msgstr "" @@ -9319,7 +9444,7 @@ msgstr "" msgid "Test Report" msgstr "" -#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:286 +#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:284 msgid "Delete Test Data" msgstr "" @@ -9339,11 +9464,11 @@ msgstr "" msgid "Install Stock Item" msgstr "" -#: stock/templates/stock/item.html:274 +#: stock/templates/stock/item.html:272 msgid "Delete all test results for this stock item" msgstr "" -#: stock/templates/stock/item.html:304 templates/js/translated/stock.js:1698 +#: stock/templates/stock/item.html:302 templates/js/translated/stock.js:1701 msgid "Add Test Result" msgstr "" @@ -9366,17 +9491,17 @@ msgid "Stock adjustment actions" msgstr "" #: stock/templates/stock/item_base.html:79 -#: stock/templates/stock/location.html:90 templates/js/translated/stock.js:1821 +#: stock/templates/stock/location.html:90 templates/js/translated/stock.js:1824 msgid "Count stock" msgstr "" #: stock/templates/stock/item_base.html:81 -#: templates/js/translated/stock.js:1803 +#: templates/js/translated/stock.js:1806 msgid "Add stock" msgstr "" #: stock/templates/stock/item_base.html:82 -#: templates/js/translated/stock.js:1812 +#: templates/js/translated/stock.js:1815 msgid "Remove stock" msgstr "" @@ -9385,12 +9510,12 @@ msgid "Serialize stock" msgstr "" #: stock/templates/stock/item_base.html:88 -#: stock/templates/stock/location.html:96 templates/js/translated/stock.js:1830 +#: stock/templates/stock/location.html:96 templates/js/translated/stock.js:1833 msgid "Transfer stock" msgstr "" #: stock/templates/stock/item_base.html:91 -#: templates/js/translated/stock.js:1884 +#: templates/js/translated/stock.js:1887 msgid "Assign to customer" msgstr "" @@ -9431,7 +9556,7 @@ 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 +#: templates/js/translated/build.js:2123 templates/navbar.html:38 msgid "Build" msgstr "" @@ -9497,7 +9622,7 @@ msgid "Available Quantity" msgstr "" #: stock/templates/stock/item_base.html:398 -#: templates/js/translated/build.js:2378 +#: templates/js/translated/build.js:2380 msgid "No location set" msgstr "" @@ -9528,40 +9653,40 @@ msgstr "" msgid "No stocktake performed" msgstr "" -#: stock/templates/stock/item_base.html:507 -#: templates/js/translated/stock.js:1951 +#: stock/templates/stock/item_base.html:504 +#: templates/js/translated/stock.js:1952 msgid "stock item" msgstr "" -#: stock/templates/stock/item_base.html:532 +#: stock/templates/stock/item_base.html:527 msgid "Edit Stock Status" msgstr "" -#: stock/templates/stock/item_base.html:541 +#: stock/templates/stock/item_base.html:536 msgid "Stock Item QR Code" msgstr "" -#: stock/templates/stock/item_base.html:552 +#: stock/templates/stock/item_base.html:547 msgid "Link Barcode to Stock Item" msgstr "" -#: stock/templates/stock/item_base.html:616 +#: stock/templates/stock/item_base.html:611 msgid "Select one of the part variants listed below." msgstr "" -#: stock/templates/stock/item_base.html:619 +#: stock/templates/stock/item_base.html:614 msgid "Warning" msgstr "" -#: stock/templates/stock/item_base.html:620 +#: stock/templates/stock/item_base.html:615 msgid "This action cannot be easily undone" msgstr "" -#: stock/templates/stock/item_base.html:628 +#: stock/templates/stock/item_base.html:623 msgid "Convert Stock Item" msgstr "" -#: stock/templates/stock/item_base.html:662 +#: stock/templates/stock/item_base.html:657 msgid "Return to Stock" msgstr "" @@ -9625,28 +9750,32 @@ msgstr "" 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 +#: stock/templates/stock/location.html:176 +msgid "Location Type" +msgstr "" + +#: stock/templates/stock/location.html:224 msgid "Create new stock location" msgstr "" -#: stock/templates/stock/location.html:218 +#: stock/templates/stock/location.html:225 msgid "New Location" msgstr "" -#: stock/templates/stock/location.html:287 +#: stock/templates/stock/location.html:295 #: templates/js/translated/stock.js:2572 msgid "stock location" msgstr "" -#: stock/templates/stock/location.html:315 +#: stock/templates/stock/location.html:317 msgid "Scanned stock container into this location" msgstr "" -#: stock/templates/stock/location.html:388 +#: stock/templates/stock/location.html:390 msgid "Stock Location QR Code" msgstr "" -#: stock/templates/stock/location.html:399 +#: stock/templates/stock/location.html:401 msgid "Link Barcode to Stock Location" msgstr "" @@ -9872,12 +10001,12 @@ msgstr "" 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/InvenTree/settings/login.html:27 templates/account/signup.html:5 #: templates/socialaccount/signup.html:5 msgid "Signup" msgstr "" -#: templates/InvenTree/settings/login.html:34 +#: templates/InvenTree/settings/login.html:36 msgid "Single Sign On" msgstr "" @@ -9916,11 +10045,11 @@ msgstr "" msgid "Part Settings" msgstr "" -#: templates/InvenTree/settings/part.html:42 +#: templates/InvenTree/settings/part.html:43 msgid "Part Import" msgstr "" -#: templates/InvenTree/settings/part.html:46 +#: templates/InvenTree/settings/part.html:47 msgid "Import Part" msgstr "" @@ -9954,36 +10083,36 @@ msgstr "" 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/plugin.html:38 #: templates/InvenTree/settings/sidebar.html:66 msgid "Plugins" msgstr "" -#: templates/InvenTree/settings/plugin.html:42 -#: templates/InvenTree/settings/plugin.html:43 +#: templates/InvenTree/settings/plugin.html:44 +#: templates/InvenTree/settings/plugin.html:45 #: templates/js/translated/plugin.js:151 msgid "Install Plugin" msgstr "" -#: templates/InvenTree/settings/plugin.html:45 -#: templates/InvenTree/settings/plugin.html:46 +#: templates/InvenTree/settings/plugin.html:47 +#: templates/InvenTree/settings/plugin.html:48 #: templates/js/translated/plugin.js:224 msgid "Reload Plugins" msgstr "" -#: templates/InvenTree/settings/plugin.html:56 +#: templates/InvenTree/settings/plugin.html:58 msgid "External plugins are not enabled for this InvenTree installation" msgstr "" -#: templates/InvenTree/settings/plugin.html:71 +#: templates/InvenTree/settings/plugin.html:73 msgid "Plugin Error Stack" msgstr "" -#: templates/InvenTree/settings/plugin.html:80 +#: templates/InvenTree/settings/plugin.html:82 msgid "Stage" msgstr "" -#: templates/InvenTree/settings/plugin.html:82 +#: templates/InvenTree/settings/plugin.html:84 #: templates/js/translated/notification.js:76 msgid "Message" msgstr "" @@ -10141,7 +10270,7 @@ 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:424 +#: templates/js/translated/stock.js:245 users/models.py:411 msgid "Delete" msgstr "" @@ -10162,7 +10291,7 @@ msgid "No project codes found" msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:158 -#: templates/js/translated/build.js:2226 +#: templates/js/translated/build.js:2228 msgid "group" msgstr "" @@ -10228,7 +10357,7 @@ msgid "Delete Location Type" msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:500 -#: templates/InvenTree/settings/stock.html:37 +#: templates/InvenTree/settings/stock.html:38 msgid "New Location Type" msgstr "" @@ -10250,7 +10379,7 @@ msgid "Home Page" msgstr "" #: templates/InvenTree/settings/sidebar.html:15 -#: templates/js/translated/forms.js:2159 templates/js/translated/tables.js:543 +#: templates/js/translated/forms.js:2167 templates/js/translated/tables.js:543 #: templates/navbar.html:107 templates/search.html:8 #: templates/search_form.html:6 templates/search_form.html:7 msgid "Search" @@ -10285,7 +10414,7 @@ msgstr "" msgid "Stock Settings" msgstr "" -#: templates/InvenTree/settings/stock.html:33 +#: templates/InvenTree/settings/stock.html:34 msgid "Stock Location Types" msgstr "" @@ -10384,49 +10513,49 @@ msgstr "" msgid "Remove multifactor" msgstr "" -#: templates/InvenTree/settings/user.html:168 +#: templates/InvenTree/settings/user.html:171 msgid "Active Sessions" msgstr "" -#: templates/InvenTree/settings/user.html:174 +#: templates/InvenTree/settings/user.html:177 msgid "Log out active sessions (except this one)" msgstr "" -#: templates/InvenTree/settings/user.html:175 +#: templates/InvenTree/settings/user.html:178 msgid "Log Out Active Sessions" msgstr "" -#: templates/InvenTree/settings/user.html:184 +#: templates/InvenTree/settings/user.html:187 msgid "unknown on unknown" msgstr "" -#: templates/InvenTree/settings/user.html:185 +#: templates/InvenTree/settings/user.html:188 msgid "unknown" msgstr "" -#: templates/InvenTree/settings/user.html:189 +#: templates/InvenTree/settings/user.html:192 msgid "IP Address" msgstr "" -#: templates/InvenTree/settings/user.html:190 +#: templates/InvenTree/settings/user.html:193 msgid "Device" msgstr "" -#: templates/InvenTree/settings/user.html:191 +#: templates/InvenTree/settings/user.html:194 msgid "Last Activity" msgstr "" -#: templates/InvenTree/settings/user.html:204 +#: templates/InvenTree/settings/user.html:207 #, python-format msgid "%(time)s ago (this session)" msgstr "" -#: templates/InvenTree/settings/user.html:206 +#: templates/InvenTree/settings/user.html:209 #, python-format msgid "%(time)s ago" msgstr "" -#: templates/InvenTree/settings/user.html:218 +#: templates/InvenTree/settings/user.html:223 msgid "Do you really want to remove the selected email address?" msgstr "" @@ -10607,26 +10736,26 @@ msgstr "" 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 +#: templates/account/login.html:6 templates/account/login.html:19 +#: templates/account/login.html:40 templates/socialaccount/login.html:5 msgid "Sign In" msgstr "" -#: templates/account/login.html:21 +#: templates/account/login.html:23 msgid "Not a member?" msgstr "" -#: templates/account/login.html:23 templates/account/signup.html:11 +#: templates/account/login.html:25 templates/account/signup.html:11 #: templates/account/signup.html:22 templates/socialaccount/signup.html:8 #: templates/socialaccount/signup.html:23 msgid "Sign Up" msgstr "" -#: templates/account/login.html:45 +#: templates/account/login.html:47 msgid "Forgot Password?" msgstr "" -#: templates/account/login.html:53 +#: templates/account/login.html:55 msgid "or log in with" msgstr "" @@ -10827,7 +10956,7 @@ 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 +#: templates/js/translated/bom.js:1674 templates/js/translated/build.js:2556 msgid "Required Quantity" msgstr "" @@ -10841,7 +10970,7 @@ msgid "Click on the following link to view this part" msgstr "" #: templates/email/low_stock_notification.html:18 -#: templates/js/translated/part.js:3218 +#: templates/js/translated/part.js:3217 msgid "Minimum Quantity" msgstr "" @@ -11006,7 +11135,7 @@ msgstr "" msgid "Unlink" msgstr "" -#: templates/js/translated/barcode.js:567 templates/js/translated/stock.js:1155 +#: templates/js/translated/barcode.js:567 templates/js/translated/stock.js:1158 msgid "Remove stock item" msgstr "" @@ -11196,7 +11325,7 @@ msgstr "" msgid "Substitutes Available" msgstr "" -#: templates/js/translated/bom.js:950 templates/js/translated/build.js:2501 +#: templates/js/translated/bom.js:950 templates/js/translated/build.js:2500 msgid "Variant stock allowed" msgstr "" @@ -11216,30 +11345,30 @@ msgstr "" msgid "No pricing available" msgstr "" -#: templates/js/translated/bom.js:1184 templates/js/translated/build.js:2622 +#: templates/js/translated/bom.js:1184 templates/js/translated/build.js:2621 msgid "External stock" msgstr "" -#: templates/js/translated/bom.js:1188 templates/js/translated/build.js:2596 -#: templates/js/translated/sales_order.js:1910 +#: templates/js/translated/bom.js:1188 templates/js/translated/build.js:2595 +#: templates/js/translated/sales_order.js:1946 msgid "No Stock Available" msgstr "" -#: templates/js/translated/bom.js:1193 templates/js/translated/build.js:2600 +#: templates/js/translated/bom.js:1193 templates/js/translated/build.js:2599 msgid "Includes variant and substitute stock" msgstr "" -#: templates/js/translated/bom.js:1195 templates/js/translated/build.js:2602 +#: templates/js/translated/bom.js:1195 templates/js/translated/build.js:2601 #: templates/js/translated/part.js:1256 -#: templates/js/translated/sales_order.js:1907 +#: templates/js/translated/sales_order.js:1943 msgid "Includes variant stock" msgstr "" -#: templates/js/translated/bom.js:1197 templates/js/translated/build.js:2604 +#: templates/js/translated/bom.js:1197 templates/js/translated/build.js:2603 msgid "Includes substitute stock" msgstr "" -#: templates/js/translated/bom.js:1225 templates/js/translated/build.js:2587 +#: templates/js/translated/bom.js:1225 templates/js/translated/build.js:2586 msgid "Consumable item" msgstr "" @@ -11271,7 +11400,7 @@ msgstr "" msgid "No BOM items found" msgstr "" -#: templates/js/translated/bom.js:1657 templates/js/translated/build.js:2486 +#: templates/js/translated/bom.js:1657 templates/js/translated/build.js:2485 msgid "Required Part" msgstr "" @@ -11440,207 +11569,207 @@ msgstr "" msgid "No build order allocations found" msgstr "" -#: templates/js/translated/build.js:989 templates/js/translated/build.js:2342 +#: templates/js/translated/build.js:991 templates/js/translated/build.js:2344 msgid "Allocated Quantity" msgstr "" -#: templates/js/translated/build.js:1003 +#: templates/js/translated/build.js:1005 msgid "Location not specified" msgstr "" -#: templates/js/translated/build.js:1025 +#: templates/js/translated/build.js:1027 msgid "Complete outputs" msgstr "" -#: templates/js/translated/build.js:1043 +#: templates/js/translated/build.js:1045 msgid "Scrap outputs" msgstr "" -#: templates/js/translated/build.js:1061 +#: templates/js/translated/build.js:1063 msgid "Delete outputs" msgstr "" -#: templates/js/translated/build.js:1115 +#: templates/js/translated/build.js:1116 msgid "build output" msgstr "" -#: templates/js/translated/build.js:1116 +#: templates/js/translated/build.js:1117 msgid "build outputs" msgstr "" -#: templates/js/translated/build.js:1120 +#: templates/js/translated/build.js:1121 msgid "Build output actions" msgstr "" -#: templates/js/translated/build.js:1294 +#: templates/js/translated/build.js:1297 msgid "No active build outputs found" msgstr "" -#: templates/js/translated/build.js:1387 +#: templates/js/translated/build.js:1390 msgid "Allocated Lines" msgstr "" -#: templates/js/translated/build.js:1401 +#: templates/js/translated/build.js:1404 msgid "Required Tests" msgstr "" -#: templates/js/translated/build.js:1573 +#: templates/js/translated/build.js:1576 #: templates/js/translated/purchase_order.js:611 -#: templates/js/translated/sales_order.js:1171 +#: templates/js/translated/sales_order.js:1207 msgid "Select Parts" msgstr "" -#: templates/js/translated/build.js:1574 -#: templates/js/translated/sales_order.js:1172 +#: templates/js/translated/build.js:1577 +#: templates/js/translated/sales_order.js:1208 msgid "You must select at least one part to allocate" msgstr "" -#: templates/js/translated/build.js:1637 -#: templates/js/translated/sales_order.js:1121 +#: templates/js/translated/build.js:1640 +#: templates/js/translated/sales_order.js:1157 msgid "Specify stock allocation quantity" msgstr "" -#: templates/js/translated/build.js:1714 +#: templates/js/translated/build.js:1717 msgid "All Parts Allocated" msgstr "" -#: templates/js/translated/build.js:1715 +#: templates/js/translated/build.js:1718 msgid "All selected parts have been fully allocated" msgstr "" -#: templates/js/translated/build.js:1729 -#: templates/js/translated/sales_order.js:1186 +#: templates/js/translated/build.js:1732 +#: templates/js/translated/sales_order.js:1222 msgid "Select source location (leave blank to take from all locations)" msgstr "" -#: templates/js/translated/build.js:1757 +#: templates/js/translated/build.js:1760 msgid "Allocate Stock Items to Build Order" msgstr "" -#: templates/js/translated/build.js:1768 -#: templates/js/translated/sales_order.js:1283 +#: templates/js/translated/build.js:1771 +#: templates/js/translated/sales_order.js:1319 msgid "No matching stock locations" msgstr "" -#: templates/js/translated/build.js:1841 -#: templates/js/translated/sales_order.js:1362 +#: templates/js/translated/build.js:1844 +#: templates/js/translated/sales_order.js:1398 msgid "No matching stock items" msgstr "" -#: templates/js/translated/build.js:1938 +#: templates/js/translated/build.js:1941 msgid "Automatic Stock Allocation" msgstr "" -#: templates/js/translated/build.js:1939 +#: templates/js/translated/build.js:1942 msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines" msgstr "" -#: templates/js/translated/build.js:1941 +#: templates/js/translated/build.js:1944 msgid "If a location is specified, stock will only be allocated from that location" msgstr "" -#: templates/js/translated/build.js:1942 +#: templates/js/translated/build.js:1945 msgid "If stock is considered interchangeable, it will be allocated from the first location it is found" msgstr "" -#: templates/js/translated/build.js:1943 +#: templates/js/translated/build.js:1946 msgid "If substitute stock is allowed, it will be used where stock of the primary part cannot be found" msgstr "" -#: templates/js/translated/build.js:1974 +#: templates/js/translated/build.js:1977 msgid "Allocate Stock Items" msgstr "" -#: templates/js/translated/build.js:2080 +#: templates/js/translated/build.js:2082 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 +#: templates/js/translated/build.js:2117 templates/js/translated/build.js:2479 +#: templates/js/translated/forms.js:2163 templates/js/translated/forms.js:2179 +#: templates/js/translated/part.js:2315 templates/js/translated/part.js:2741 +#: templates/js/translated/stock.js:1983 templates/js/translated/stock.js:2710 msgid "Select" msgstr "" -#: templates/js/translated/build.js:2129 +#: templates/js/translated/build.js:2131 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 +#: templates/js/translated/build.js:2213 templates/js/translated/stock.js:3042 msgid "No user information" msgstr "" -#: templates/js/translated/build.js:2387 -#: templates/js/translated/sales_order.js:1646 +#: templates/js/translated/build.js:2389 +#: templates/js/translated/sales_order.js:1682 msgid "Edit stock allocation" msgstr "" -#: templates/js/translated/build.js:2388 -#: templates/js/translated/sales_order.js:1647 +#: templates/js/translated/build.js:2390 +#: templates/js/translated/sales_order.js:1683 msgid "Delete stock allocation" msgstr "" -#: templates/js/translated/build.js:2403 +#: templates/js/translated/build.js:2405 msgid "Edit Allocation" msgstr "" -#: templates/js/translated/build.js:2415 +#: templates/js/translated/build.js:2417 msgid "Remove Allocation" msgstr "" -#: templates/js/translated/build.js:2456 +#: templates/js/translated/build.js:2455 msgid "build line" msgstr "" -#: templates/js/translated/build.js:2457 +#: templates/js/translated/build.js:2456 msgid "build lines" msgstr "" -#: templates/js/translated/build.js:2475 +#: templates/js/translated/build.js:2474 msgid "No build lines found" msgstr "" -#: templates/js/translated/build.js:2505 templates/js/translated/part.js:790 +#: templates/js/translated/build.js:2504 templates/js/translated/part.js:790 #: templates/js/translated/part.js:1202 msgid "Trackable part" msgstr "" -#: templates/js/translated/build.js:2540 +#: templates/js/translated/build.js:2539 msgid "Unit Quantity" msgstr "" -#: templates/js/translated/build.js:2592 -#: templates/js/translated/sales_order.js:1915 +#: templates/js/translated/build.js:2591 +#: templates/js/translated/sales_order.js:1951 msgid "Sufficient stock available" msgstr "" -#: templates/js/translated/build.js:2647 +#: templates/js/translated/build.js:2646 msgid "Consumable Item" msgstr "" -#: templates/js/translated/build.js:2652 +#: templates/js/translated/build.js:2653 msgid "Tracked item" msgstr "" -#: templates/js/translated/build.js:2659 -#: templates/js/translated/sales_order.js:2016 +#: templates/js/translated/build.js:2654 +msgid "Allocate tracked items against individual build outputs" +msgstr "" + +#: templates/js/translated/build.js:2662 +#: templates/js/translated/sales_order.js:2052 msgid "Build stock" msgstr "" -#: templates/js/translated/build.js:2664 templates/js/translated/stock.js:1865 +#: templates/js/translated/build.js:2667 templates/js/translated/stock.js:1868 msgid "Order stock" msgstr "" -#: templates/js/translated/build.js:2668 -#: templates/js/translated/sales_order.js:2010 +#: templates/js/translated/build.js:2671 +#: templates/js/translated/sales_order.js:2046 msgid "Allocate stock" msgstr "" -#: templates/js/translated/build.js:2672 +#: templates/js/translated/build.js:2675 msgid "Remove stock allocation" msgstr "" @@ -11886,12 +12015,12 @@ msgid "Delete price break" msgstr "" #: templates/js/translated/filters.js:186 -#: templates/js/translated/filters.js:672 +#: templates/js/translated/filters.js:667 msgid "true" msgstr "" #: templates/js/translated/filters.js:190 -#: templates/js/translated/filters.js:673 +#: templates/js/translated/filters.js:668 msgid "false" msgstr "" @@ -11923,7 +12052,7 @@ msgstr "" msgid "Clear all filters" msgstr "" -#: templates/js/translated/filters.js:582 +#: templates/js/translated/filters.js:577 msgid "Create filter" msgstr "" @@ -11956,32 +12085,32 @@ msgstr "" msgid "Enter a valid number" msgstr "" -#: templates/js/translated/forms.js:1473 templates/modals.html:19 +#: templates/js/translated/forms.js:1477 templates/modals.html:19 #: templates/modals.html:43 msgid "Form errors exist" msgstr "" -#: templates/js/translated/forms.js:1971 +#: templates/js/translated/forms.js:1975 msgid "No results found" msgstr "" -#: templates/js/translated/forms.js:2275 templates/js/translated/search.js:239 +#: templates/js/translated/forms.js:2285 templates/js/translated/search.js:239 msgid "Searching" msgstr "" -#: templates/js/translated/forms.js:2489 +#: templates/js/translated/forms.js:2499 msgid "Clear input" msgstr "" -#: templates/js/translated/forms.js:3091 +#: templates/js/translated/forms.js:3101 msgid "File Column" msgstr "" -#: templates/js/translated/forms.js:3091 +#: templates/js/translated/forms.js:3101 msgid "Field Name" msgstr "" -#: templates/js/translated/forms.js:3103 +#: templates/js/translated/forms.js:3113 msgid "Select Columns" msgstr "" @@ -12005,51 +12134,15 @@ msgstr "" msgid "No parts required for builds" msgstr "" -#: templates/js/translated/label.js:53 templates/js/translated/report.js:123 +#: templates/js/translated/label.js:55 templates/js/translated/report.js:38 msgid "Select Items" msgstr "" -#: templates/js/translated/label.js:54 +#: templates/js/translated/label.js:56 templates/js/translated/report.js:39 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 +#: templates/js/translated/label.js:150 msgid "Labels sent to printer" msgstr "" @@ -12167,7 +12260,7 @@ msgid "Delete Line" msgstr "" #: templates/js/translated/order.js:281 -#: templates/js/translated/purchase_order.js:1991 +#: templates/js/translated/purchase_order.js:1990 msgid "No line items found" msgstr "" @@ -12405,19 +12498,19 @@ msgid "Delete Part Parameter Template" msgstr "" #: templates/js/translated/part.js:1716 -#: templates/js/translated/purchase_order.js:1655 +#: templates/js/translated/purchase_order.js:1654 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 +#: templates/js/translated/purchase_order.js:2153 +#: templates/js/translated/return_order.js:755 +#: templates/js/translated/sales_order.js:1911 msgid "This line item is overdue" msgstr "" #: templates/js/translated/part.js:1906 -#: templates/js/translated/purchase_order.js:2221 +#: templates/js/translated/purchase_order.js:2220 msgid "Receive line item" msgstr "" @@ -12429,7 +12522,7 @@ msgstr "" msgid "Delete Part Relationship" msgstr "" -#: templates/js/translated/part.js:2079 templates/js/translated/part.js:2506 +#: templates/js/translated/part.js:2079 templates/js/translated/part.js:2505 msgid "No parts found" msgstr "" @@ -12445,101 +12538,101 @@ msgstr "" msgid "Set category" msgstr "" -#: templates/js/translated/part.js:2287 +#: templates/js/translated/part.js:2286 msgid "part" msgstr "" -#: templates/js/translated/part.js:2288 +#: templates/js/translated/part.js:2287 msgid "parts" msgstr "" -#: templates/js/translated/part.js:2384 +#: templates/js/translated/part.js:2383 msgid "No category" msgstr "" -#: templates/js/translated/part.js:2531 templates/js/translated/part.js:2661 +#: templates/js/translated/part.js:2530 templates/js/translated/part.js:2660 #: templates/js/translated/stock.js:2669 msgid "Display as list" msgstr "" -#: templates/js/translated/part.js:2547 +#: templates/js/translated/part.js:2546 msgid "Display as grid" msgstr "" -#: templates/js/translated/part.js:2645 +#: templates/js/translated/part.js:2644 msgid "No subcategories found" msgstr "" -#: templates/js/translated/part.js:2681 templates/js/translated/stock.js:2689 +#: templates/js/translated/part.js:2680 templates/js/translated/stock.js:2689 msgid "Display as tree" msgstr "" -#: templates/js/translated/part.js:2761 +#: templates/js/translated/part.js:2760 msgid "Load Subcategories" msgstr "" -#: templates/js/translated/part.js:2777 +#: templates/js/translated/part.js:2776 msgid "Subscribed category" msgstr "" -#: templates/js/translated/part.js:2864 +#: templates/js/translated/part.js:2863 msgid "No test templates matching query" msgstr "" -#: templates/js/translated/part.js:2886 templates/js/translated/search.js:342 +#: templates/js/translated/part.js:2885 templates/js/translated/search.js:342 msgid "results" msgstr "" -#: templates/js/translated/part.js:2936 templates/js/translated/stock.js:1453 +#: templates/js/translated/part.js:2935 templates/js/translated/stock.js:1456 msgid "Edit test result" msgstr "" -#: templates/js/translated/part.js:2937 templates/js/translated/stock.js:1454 -#: templates/js/translated/stock.js:1728 +#: templates/js/translated/part.js:2936 templates/js/translated/stock.js:1457 +#: templates/js/translated/stock.js:1731 msgid "Delete test result" msgstr "" -#: templates/js/translated/part.js:2941 +#: templates/js/translated/part.js:2940 msgid "This test is defined for a parent part" msgstr "" -#: templates/js/translated/part.js:2957 +#: templates/js/translated/part.js:2956 msgid "Edit Test Result Template" msgstr "" -#: templates/js/translated/part.js:2971 +#: templates/js/translated/part.js:2970 msgid "Delete Test Result Template" msgstr "" -#: templates/js/translated/part.js:3050 templates/js/translated/part.js:3051 +#: templates/js/translated/part.js:3049 templates/js/translated/part.js:3050 msgid "No date specified" msgstr "" -#: templates/js/translated/part.js:3053 +#: templates/js/translated/part.js:3052 msgid "Specified date is in the past" msgstr "" -#: templates/js/translated/part.js:3059 +#: templates/js/translated/part.js:3058 msgid "Speculative" msgstr "" -#: templates/js/translated/part.js:3109 +#: templates/js/translated/part.js:3108 msgid "No scheduling information available for this part" msgstr "" -#: templates/js/translated/part.js:3115 +#: templates/js/translated/part.js:3114 msgid "Error fetching scheduling information for this part" msgstr "" -#: templates/js/translated/part.js:3211 +#: templates/js/translated/part.js:3210 msgid "Scheduled Stock Quantities" msgstr "" -#: templates/js/translated/part.js:3227 +#: templates/js/translated/part.js:3226 msgid "Maximum Quantity" msgstr "" -#: templates/js/translated/part.js:3272 +#: templates/js/translated/part.js:3271 msgid "Minimum Stock Level" msgstr "" @@ -12665,7 +12758,7 @@ msgstr "" #: templates/js/translated/purchase_order.js:448 #: templates/js/translated/return_order.js:210 -#: templates/js/translated/sales_order.js:500 +#: templates/js/translated/sales_order.js:552 msgid "Mark this order as complete?" msgstr "" @@ -12678,7 +12771,6 @@ 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 "" @@ -12736,12 +12828,12 @@ msgid "No matching purchase orders" msgstr "" #: templates/js/translated/purchase_order.js:1073 -#: templates/js/translated/return_order.js:491 +#: templates/js/translated/return_order.js:490 msgid "Select Line Items" msgstr "" #: templates/js/translated/purchase_order.js:1074 -#: templates/js/translated/return_order.js:492 +#: templates/js/translated/return_order.js:491 msgid "At least one line item must be selected" msgstr "" @@ -12790,7 +12882,7 @@ msgid "Quantity to Receive" msgstr "" #: templates/js/translated/purchase_order.js:1333 -#: templates/js/translated/return_order.js:561 +#: templates/js/translated/return_order.js:560 msgid "Confirm receipt of items" msgstr "" @@ -12810,81 +12902,66 @@ msgstr "" 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 +#: templates/js/translated/purchase_order.js:1681 +#: templates/js/translated/return_order.js:285 +#: templates/js/translated/sales_order.js:810 +#: templates/js/translated/sales_order.js:1034 msgid "Order is overdue" msgstr "" -#: templates/js/translated/purchase_order.js: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 +#: templates/js/translated/purchase_order.js:1843 msgid "All selected Line items will be deleted" msgstr "" -#: templates/js/translated/purchase_order.js:1862 +#: templates/js/translated/purchase_order.js:1861 msgid "Delete selected Line items?" msgstr "" -#: templates/js/translated/purchase_order.js:1917 -#: templates/js/translated/sales_order.js:2070 +#: templates/js/translated/purchase_order.js:1916 +#: templates/js/translated/sales_order.js:2106 msgid "Duplicate Line Item" msgstr "" -#: templates/js/translated/purchase_order.js:1932 -#: templates/js/translated/return_order.js:476 -#: templates/js/translated/return_order.js:669 -#: templates/js/translated/sales_order.js:2083 +#: templates/js/translated/purchase_order.js:1931 +#: templates/js/translated/return_order.js:475 +#: templates/js/translated/return_order.js:668 +#: templates/js/translated/sales_order.js:2119 msgid "Edit Line Item" msgstr "" -#: templates/js/translated/purchase_order.js:1943 -#: templates/js/translated/return_order.js:682 -#: templates/js/translated/sales_order.js:2094 +#: templates/js/translated/purchase_order.js:1942 +#: templates/js/translated/return_order.js:681 +#: templates/js/translated/sales_order.js:2130 msgid "Delete Line Item" msgstr "" -#: templates/js/translated/purchase_order.js:2225 -#: templates/js/translated/sales_order.js:2024 +#: templates/js/translated/purchase_order.js:2224 +#: templates/js/translated/sales_order.js:2060 msgid "Duplicate line item" msgstr "" -#: templates/js/translated/purchase_order.js:2226 -#: templates/js/translated/return_order.js:801 -#: templates/js/translated/sales_order.js:2025 +#: templates/js/translated/purchase_order.js:2225 +#: templates/js/translated/return_order.js:800 +#: templates/js/translated/sales_order.js:2061 msgid "Edit line item" msgstr "" -#: templates/js/translated/purchase_order.js:2227 -#: templates/js/translated/return_order.js:805 -#: templates/js/translated/sales_order.js:2031 +#: templates/js/translated/purchase_order.js:2226 +#: templates/js/translated/return_order.js:804 +#: templates/js/translated/sales_order.js:2067 msgid "Delete line item" msgstr "" -#: templates/js/translated/report.js:63 -msgid "items selected" +#: templates/js/translated/report.js:49 +msgid "Print Report" msgstr "" -#: templates/js/translated/report.js:71 -msgid "Select Report Template" +#: templates/js/translated/report.js:68 +msgid "Report print successful" 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" +#: templates/js/translated/report.js:73 +msgid "Report printing failed" msgstr "" #: templates/js/translated/return_order.js:60 @@ -12916,25 +12993,25 @@ msgstr "" msgid "Complete Return Order" msgstr "" -#: templates/js/translated/return_order.js:266 +#: templates/js/translated/return_order.js:265 msgid "No return orders found" msgstr "" -#: templates/js/translated/return_order.js:300 -#: templates/js/translated/sales_order.js:788 +#: templates/js/translated/return_order.js:299 +#: templates/js/translated/sales_order.js:824 msgid "Invalid Customer" msgstr "" -#: templates/js/translated/return_order.js:562 +#: templates/js/translated/return_order.js:561 msgid "Receive Return Order Items" msgstr "" -#: templates/js/translated/return_order.js:693 -#: templates/js/translated/sales_order.js:2231 +#: templates/js/translated/return_order.js:692 +#: templates/js/translated/sales_order.js:2267 msgid "No matching line items" msgstr "" -#: templates/js/translated/return_order.js:798 +#: templates/js/translated/return_order.js:797 msgid "Mark item as received" msgstr "" @@ -12978,140 +13055,156 @@ msgstr "" msgid "Skip" msgstr "" +#: templates/js/translated/sales_order.js:484 +msgid "Ship Sales Order" +msgstr "" + +#: templates/js/translated/sales_order.js:500 +msgid "Ship this order?" +msgstr "" + +#: templates/js/translated/sales_order.js:506 +msgid "Order cannot be shipped as there are incomplete shipments" +msgstr "" + #: templates/js/translated/sales_order.js:513 msgid "This order has line items which have not been completed." msgstr "" -#: templates/js/translated/sales_order.js:535 +#: templates/js/translated/sales_order.js:514 +msgid "Shipping this order means that the order and line items will no longer be editable." +msgstr "" + +#: templates/js/translated/sales_order.js:572 msgid "Issue this Sales Order?" msgstr "" -#: templates/js/translated/sales_order.js:540 +#: templates/js/translated/sales_order.js:577 msgid "Issue Sales Order" msgstr "" -#: templates/js/translated/sales_order.js:559 +#: templates/js/translated/sales_order.js:596 msgid "Cancel Sales Order" msgstr "" -#: templates/js/translated/sales_order.js:564 +#: templates/js/translated/sales_order.js:601 msgid "Cancelling this order means that the order will no longer be editable." msgstr "" -#: templates/js/translated/sales_order.js:618 +#: templates/js/translated/sales_order.js:655 msgid "Create New Shipment" msgstr "" -#: templates/js/translated/sales_order.js:728 +#: templates/js/translated/sales_order.js:764 msgid "No sales orders found" msgstr "" -#: templates/js/translated/sales_order.js:908 +#: templates/js/translated/sales_order.js:944 msgid "Edit shipment" msgstr "" -#: templates/js/translated/sales_order.js:911 +#: templates/js/translated/sales_order.js:947 msgid "Complete shipment" msgstr "" -#: templates/js/translated/sales_order.js:916 +#: templates/js/translated/sales_order.js:952 msgid "Delete shipment" msgstr "" -#: templates/js/translated/sales_order.js:933 +#: templates/js/translated/sales_order.js:969 msgid "Edit Shipment" msgstr "" -#: templates/js/translated/sales_order.js:948 +#: templates/js/translated/sales_order.js:984 msgid "Delete Shipment" msgstr "" -#: templates/js/translated/sales_order.js:981 +#: templates/js/translated/sales_order.js:1017 msgid "No matching shipments found" msgstr "" -#: templates/js/translated/sales_order.js:1006 +#: templates/js/translated/sales_order.js:1042 msgid "Shipment Reference" msgstr "" -#: templates/js/translated/sales_order.js:1030 -#: templates/js/translated/sales_order.js:1529 +#: templates/js/translated/sales_order.js:1066 +#: templates/js/translated/sales_order.js:1565 msgid "Not shipped" msgstr "" -#: templates/js/translated/sales_order.js:1048 +#: templates/js/translated/sales_order.js:1084 msgid "Tracking" msgstr "" -#: templates/js/translated/sales_order.js:1052 +#: templates/js/translated/sales_order.js:1088 msgid "Invoice" msgstr "" -#: templates/js/translated/sales_order.js:1219 +#: templates/js/translated/sales_order.js:1255 msgid "Add Shipment" msgstr "" -#: templates/js/translated/sales_order.js:1270 +#: templates/js/translated/sales_order.js:1306 msgid "Confirm stock allocation" msgstr "" -#: templates/js/translated/sales_order.js:1271 +#: templates/js/translated/sales_order.js:1307 msgid "Allocate Stock Items to Sales Order" msgstr "" -#: templates/js/translated/sales_order.js:1477 +#: templates/js/translated/sales_order.js:1513 msgid "No sales order allocations found" msgstr "" -#: templates/js/translated/sales_order.js:1569 +#: templates/js/translated/sales_order.js:1605 msgid "Edit Stock Allocation" msgstr "" -#: templates/js/translated/sales_order.js:1583 +#: templates/js/translated/sales_order.js:1619 msgid "Confirm Delete Operation" msgstr "" -#: templates/js/translated/sales_order.js:1584 +#: templates/js/translated/sales_order.js:1620 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 +#: templates/js/translated/sales_order.js:1659 +#: templates/js/translated/sales_order.js:1746 +#: templates/js/translated/stock.js:1776 msgid "Shipped to customer" msgstr "" -#: templates/js/translated/sales_order.js:1631 -#: templates/js/translated/sales_order.js:1719 +#: templates/js/translated/sales_order.js:1667 +#: templates/js/translated/sales_order.js:1755 msgid "Stock location not specified" msgstr "" -#: templates/js/translated/sales_order.js:2008 +#: templates/js/translated/sales_order.js:2044 msgid "Allocate serial numbers" msgstr "" -#: templates/js/translated/sales_order.js:2012 +#: templates/js/translated/sales_order.js:2048 msgid "Purchase stock" msgstr "" -#: templates/js/translated/sales_order.js:2021 -#: templates/js/translated/sales_order.js:2209 +#: templates/js/translated/sales_order.js:2057 +#: templates/js/translated/sales_order.js:2245 msgid "Calculate price" msgstr "" -#: templates/js/translated/sales_order.js:2035 +#: templates/js/translated/sales_order.js:2071 msgid "Cannot be deleted as items have been shipped" msgstr "" -#: templates/js/translated/sales_order.js:2038 +#: templates/js/translated/sales_order.js:2074 msgid "Cannot be deleted as items have been allocated" msgstr "" -#: templates/js/translated/sales_order.js:2109 +#: templates/js/translated/sales_order.js:2145 msgid "Allocate Serial Numbers" msgstr "" -#: templates/js/translated/sales_order.js:2217 +#: templates/js/translated/sales_order.js:2253 msgid "Update Unit Price" msgstr "" @@ -13319,7 +13412,7 @@ msgstr "" msgid "Add Stock" msgstr "" -#: templates/js/translated/stock.js:1042 users/models.py:414 +#: templates/js/translated/stock.js:1042 users/models.py:401 msgid "Add" msgstr "" @@ -13327,180 +13420,180 @@ msgstr "" msgid "Delete Stock" msgstr "" -#: templates/js/translated/stock.js:1143 +#: templates/js/translated/stock.js:1146 msgid "Quantity cannot be adjusted for serialized stock" msgstr "" -#: templates/js/translated/stock.js:1143 +#: templates/js/translated/stock.js:1146 msgid "Specify stock quantity" msgstr "" -#: templates/js/translated/stock.js:1177 templates/js/translated/stock.js:3299 +#: templates/js/translated/stock.js:1180 templates/js/translated/stock.js:3299 msgid "Select Stock Items" msgstr "" -#: templates/js/translated/stock.js:1178 +#: templates/js/translated/stock.js:1181 msgid "Select at least one available stock item" msgstr "" -#: templates/js/translated/stock.js:1224 +#: templates/js/translated/stock.js:1227 msgid "Confirm stock adjustment" msgstr "" -#: templates/js/translated/stock.js:1360 +#: templates/js/translated/stock.js:1363 msgid "PASS" msgstr "" -#: templates/js/translated/stock.js:1362 +#: templates/js/translated/stock.js:1365 msgid "FAIL" msgstr "" -#: templates/js/translated/stock.js:1367 +#: templates/js/translated/stock.js:1370 msgid "NO RESULT" msgstr "" -#: templates/js/translated/stock.js:1447 +#: templates/js/translated/stock.js:1450 msgid "Pass test" msgstr "" -#: templates/js/translated/stock.js:1450 +#: templates/js/translated/stock.js:1453 msgid "Add test result" msgstr "" -#: templates/js/translated/stock.js:1473 +#: templates/js/translated/stock.js:1476 msgid "No test results found" msgstr "" -#: templates/js/translated/stock.js:1537 +#: templates/js/translated/stock.js:1540 msgid "Test Date" msgstr "" -#: templates/js/translated/stock.js:1550 +#: templates/js/translated/stock.js:1553 msgid "Test started" msgstr "" -#: templates/js/translated/stock.js:1559 +#: templates/js/translated/stock.js:1562 msgid "Test finished" msgstr "" -#: templates/js/translated/stock.js:1713 +#: templates/js/translated/stock.js:1716 msgid "Edit Test Result" msgstr "" -#: templates/js/translated/stock.js:1733 +#: templates/js/translated/stock.js:1736 msgid "Delete Test Result" msgstr "" -#: templates/js/translated/stock.js:1765 +#: templates/js/translated/stock.js:1768 msgid "In production" msgstr "" -#: templates/js/translated/stock.js:1769 +#: templates/js/translated/stock.js:1772 msgid "Installed in Stock Item" msgstr "" -#: templates/js/translated/stock.js:1777 +#: templates/js/translated/stock.js:1780 msgid "Assigned to Sales Order" msgstr "" -#: templates/js/translated/stock.js:1783 +#: templates/js/translated/stock.js:1786 msgid "No stock location set" msgstr "" -#: templates/js/translated/stock.js:1839 +#: templates/js/translated/stock.js:1842 msgid "Change stock status" msgstr "" -#: templates/js/translated/stock.js:1848 +#: templates/js/translated/stock.js:1851 msgid "Merge stock" msgstr "" -#: templates/js/translated/stock.js:1897 +#: templates/js/translated/stock.js:1900 msgid "Delete stock" msgstr "" -#: templates/js/translated/stock.js:1952 +#: templates/js/translated/stock.js:1953 msgid "stock items" msgstr "" -#: templates/js/translated/stock.js:1957 +#: templates/js/translated/stock.js:1958 msgid "Scan to location" msgstr "" -#: templates/js/translated/stock.js:1968 +#: templates/js/translated/stock.js:1969 msgid "Stock Actions" msgstr "" -#: templates/js/translated/stock.js:2012 +#: templates/js/translated/stock.js:2013 msgid "Load installed items" msgstr "" -#: templates/js/translated/stock.js:2090 +#: templates/js/translated/stock.js:2091 msgid "Stock item is in production" msgstr "" -#: templates/js/translated/stock.js:2095 +#: templates/js/translated/stock.js:2096 msgid "Stock item assigned to sales order" msgstr "" -#: templates/js/translated/stock.js:2098 +#: templates/js/translated/stock.js:2099 msgid "Stock item assigned to customer" msgstr "" -#: templates/js/translated/stock.js:2101 +#: templates/js/translated/stock.js:2102 msgid "Serialized stock item has been allocated" msgstr "" -#: templates/js/translated/stock.js:2103 +#: templates/js/translated/stock.js:2104 msgid "Stock item has been fully allocated" msgstr "" -#: templates/js/translated/stock.js:2105 +#: templates/js/translated/stock.js:2106 msgid "Stock item has been partially allocated" msgstr "" -#: templates/js/translated/stock.js:2108 +#: templates/js/translated/stock.js:2109 msgid "Stock item has been installed in another item" msgstr "" -#: templates/js/translated/stock.js:2110 +#: templates/js/translated/stock.js:2111 msgid "Stock item has been consumed by a build order" msgstr "" -#: templates/js/translated/stock.js:2114 +#: templates/js/translated/stock.js:2115 msgid "Stock item has expired" msgstr "" -#: templates/js/translated/stock.js:2116 +#: templates/js/translated/stock.js:2117 msgid "Stock item will expire soon" msgstr "" -#: templates/js/translated/stock.js:2121 +#: templates/js/translated/stock.js:2122 msgid "Stock item has been rejected" msgstr "" -#: templates/js/translated/stock.js:2123 +#: templates/js/translated/stock.js:2124 msgid "Stock item is lost" msgstr "" -#: templates/js/translated/stock.js:2125 +#: templates/js/translated/stock.js:2126 msgid "Stock item is destroyed" msgstr "" -#: templates/js/translated/stock.js:2129 +#: templates/js/translated/stock.js:2130 #: templates/js/translated/table_filters.js:350 msgid "Depleted" msgstr "" -#: templates/js/translated/stock.js:2294 +#: templates/js/translated/stock.js:2295 msgid "Supplier part not specified" msgstr "" -#: templates/js/translated/stock.js:2341 +#: templates/js/translated/stock.js:2342 msgid "Stock Value" msgstr "" -#: templates/js/translated/stock.js:2469 +#: templates/js/translated/stock.js:2470 msgid "No stock items matching query" msgstr "" @@ -13973,6 +14066,22 @@ msgstr "" msgid "Show all notifications and history" msgstr "" +#: templates/pui_banner.html:9 +msgid "Platform UI - the new UI for InvenTree - provides more modern administration options." +msgstr "" + +#: templates/pui_banner.html:12 +msgid "Platform UI - the new UI for InvenTree - is ready to be tested." +msgstr "" + +#: templates/pui_banner.html:15 +msgid "Try it out now" +msgstr "" + +#: templates/pui_banner.html:15 +msgid "here" +msgstr "" + #: templates/qr_code.html:11 msgid "QR data not provided" msgstr "" @@ -14194,35 +14303,34 @@ msgstr "" msgid "Revoked" msgstr "" -#: users/models.py:397 +#: users/models.py:384 msgid "Permission set" msgstr "" -#: users/models.py:406 +#: users/models.py:393 msgid "Group" msgstr "" -#: users/models.py:410 +#: users/models.py:397 msgid "View" msgstr "" -#: users/models.py:410 +#: users/models.py:397 msgid "Permission to view items" msgstr "" -#: users/models.py:414 +#: users/models.py:401 msgid "Permission to add items" msgstr "" -#: users/models.py:418 +#: users/models.py:405 msgid "Change" msgstr "" -#: users/models.py:420 +#: users/models.py:407 msgid "Permissions to edit items" msgstr "" -#: users/models.py:426 +#: users/models.py:413 msgid "Permission to delete items" msgstr "" - diff --git a/src/backend/InvenTree/locale/cs/LC_MESSAGES/django.po b/src/backend/InvenTree/locale/cs/LC_MESSAGES/django.po index e846bd6b8d..b1a73d11a1 100644 --- a/src/backend/InvenTree/locale/cs/LC_MESSAGES/django.po +++ b/src/backend/InvenTree/locale/cs/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-04-20 13:19+0000\n" -"PO-Revision-Date: 2024-04-21 04:19\n" +"POT-Creation-Date: 2024-05-31 07:08+0000\n" +"PO-Revision-Date: 2024-05-27 11:54\n" "Last-Translator: \n" "Language-Team: Czech\n" "Language: cs_CZ\n" @@ -17,11 +17,11 @@ msgstr "" "X-Crowdin-File: /[inventree.InvenTree] l10/src/backend/InvenTree/locale/en/LC_MESSAGES/django.po\n" "X-Crowdin-File-ID: 216\n" -#: InvenTree/api.py:255 +#: InvenTree/api.py:272 msgid "API endpoint not found" msgstr "API endpoint nebyl nalezen" -#: InvenTree/api.py:519 +#: InvenTree/api.py:536 msgid "User does not have permission to view this model" msgstr "Uživatel nemá právo zobrazit tento model" @@ -56,26 +56,26 @@ msgstr "Podrobnosti o chybě lze nalézt v panelu administrace" msgid "Enter date" msgstr "Zadejte datum" -#: InvenTree/fields.py:208 InvenTree/models.py:1021 build/serializers.py:438 -#: build/serializers.py:516 build/templates/build/sidebar.html:21 -#: company/models.py:847 company/templates/company/sidebar.html:37 -#: order/models.py:1283 order/templates/order/po_sidebar.html:11 +#: InvenTree/fields.py:208 InvenTree/models.py:1035 build/serializers.py:453 +#: build/serializers.py:531 build/templates/build/sidebar.html:21 +#: company/models.py:849 company/templates/company/sidebar.html:37 +#: order/models.py:1332 order/templates/order/po_sidebar.html:11 #: order/templates/order/return_order_sidebar.html:9 #: order/templates/order/so_sidebar.html:17 part/admin.py:59 -#: part/models.py:3175 part/templates/part/part_sidebar.html:63 -#: report/templates/report/inventree_build_order_base.html:172 -#: stock/admin.py:226 stock/models.py:2332 stock/models.py:2449 -#: 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 +#: part/models.py:3218 part/templates/part/part_sidebar.html:63 +#: report/templates/report/inventree_build_order_report.html:172 +#: stock/admin.py:226 stock/models.py:2325 stock/models.py:2442 +#: stock/serializers.py:630 stock/serializers.py:788 stock/serializers.py:884 +#: stock/serializers.py:934 stock/serializers.py:1243 stock/serializers.py:1332 +#: stock/serializers.py:1497 stock/templates/stock/stock_sidebar.html:25 #: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1265 #: templates/js/translated/company.js:1684 templates/js/translated/order.js:347 #: templates/js/translated/part.js:1080 -#: templates/js/translated/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 +#: templates/js/translated/purchase_order.js:2200 +#: templates/js/translated/return_order.js:775 +#: templates/js/translated/sales_order.js:1103 +#: templates/js/translated/sales_order.js:2018 +#: templates/js/translated/stock.js:1536 templates/js/translated/stock.js:2428 msgid "Notes" msgstr "Poznámky" @@ -132,7 +132,7 @@ msgstr "Zadaná e-mailová doména není povolena." msgid "Registration is disabled." msgstr "Registrace vypnuta." -#: InvenTree/helpers.py:525 order/models.py:541 order/models.py:743 +#: InvenTree/helpers.py:525 order/models.py:562 order/models.py:764 msgid "Invalid quantity provided" msgstr "Vyplněno neplatné množství" @@ -324,14 +324,18 @@ msgid "Turkish" msgstr "Turečtina" #: InvenTree/locales.py:48 +msgid "Ukrainian" +msgstr "" + +#: InvenTree/locales.py:49 msgid "Vietnamese" msgstr "Vietnamština" -#: InvenTree/locales.py:49 +#: InvenTree/locales.py:50 msgid "Chinese (Simplified)" msgstr "Čínština (zjednodušená)" -#: InvenTree/locales.py:50 +#: InvenTree/locales.py:51 msgid "Chinese (Traditional)" msgstr "Čínština (tradiční)" @@ -351,145 +355,145 @@ msgstr "E-mail" msgid "Error running plugin validation" msgstr "Chyba při ověření pluginu" -#: InvenTree/models.py:162 +#: InvenTree/models.py:176 msgid "Metadata must be a python dict object" msgstr "Metadata musí být objekt python dict" -#: InvenTree/models.py:168 +#: InvenTree/models.py:182 msgid "Plugin Metadata" msgstr "Metadata pluginu" -#: InvenTree/models.py:169 +#: InvenTree/models.py:183 msgid "JSON metadata field, for use by external plugins" msgstr "Pole metadat JSON pro použití externími pluginy" -#: InvenTree/models.py:399 +#: InvenTree/models.py:413 msgid "Improperly formatted pattern" msgstr "Nesprávně naformátovaný vzor" -#: InvenTree/models.py:406 +#: InvenTree/models.py:420 msgid "Unknown format key specified" msgstr "Neznámý formát klíče" -#: InvenTree/models.py:412 +#: InvenTree/models.py:426 msgid "Missing required format key" msgstr "Chybí požadovaný klíč" -#: InvenTree/models.py:423 +#: InvenTree/models.py:437 msgid "Reference field cannot be empty" msgstr "Referenční pole nemůže být prázdné" -#: InvenTree/models.py:431 +#: InvenTree/models.py:445 msgid "Reference must match required pattern" msgstr "Referenční číslo musí odpovídat požadovanému vzoru" -#: InvenTree/models.py:462 +#: InvenTree/models.py:476 msgid "Reference number is too large" msgstr "Referenční číslo je příliš velké" -#: InvenTree/models.py:536 +#: InvenTree/models.py:550 msgid "Missing file" msgstr "Chybějící soubor" -#: InvenTree/models.py:537 +#: InvenTree/models.py:551 msgid "Missing external link" msgstr "Chybějící externí odkaz" -#: InvenTree/models.py:558 stock/models.py:2444 +#: InvenTree/models.py:572 stock/models.py:2437 #: templates/js/translated/attachment.js:119 #: templates/js/translated/attachment.js:326 msgid "Attachment" msgstr "Příloha" -#: InvenTree/models.py:559 +#: InvenTree/models.py:573 msgid "Select file to attach" msgstr "Vyberte soubor k přiložení" -#: InvenTree/models.py:567 common/models.py:3018 company/models.py:146 -#: company/models.py:457 company/models.py:514 company/models.py:830 -#: order/models.py:291 order/models.py:1288 order/models.py:1702 -#: part/admin.py:55 part/models.py:919 +#: InvenTree/models.py:581 common/models.py:3041 company/models.py:146 +#: company/models.py:457 company/models.py:514 company/models.py:831 +#: order/models.py:303 order/models.py:1337 order/models.py:1753 +#: part/admin.py:55 part/models.py:962 #: part/templates/part/part_scheduling.html:11 -#: report/templates/report/inventree_build_order_base.html:164 +#: report/templates/report/inventree_build_order_report.html:164 #: stock/admin.py:225 templates/js/translated/company.js:1319 #: templates/js/translated/company.js:1673 templates/js/translated/order.js:351 -#: templates/js/translated/part.js: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 +#: templates/js/translated/part.js:2455 +#: templates/js/translated/purchase_order.js:2040 +#: templates/js/translated/purchase_order.js:2204 +#: templates/js/translated/return_order.js:779 +#: templates/js/translated/sales_order.js:1092 +#: templates/js/translated/sales_order.js:2023 msgid "Link" msgstr "Odkaz" -#: InvenTree/models.py:568 build/models.py:315 part/models.py:920 -#: stock/models.py:819 +#: InvenTree/models.py:582 build/models.py:345 part/models.py:963 +#: stock/models.py:836 msgid "Link to external URL" msgstr "Odkaz na externí URL" -#: InvenTree/models.py:574 templates/js/translated/attachment.js:120 +#: InvenTree/models.py:588 templates/js/translated/attachment.js:120 #: templates/js/translated/attachment.js:341 msgid "Comment" msgstr "Komentář" -#: InvenTree/models.py:575 +#: InvenTree/models.py:589 msgid "File comment" msgstr "Komentář k souboru" -#: InvenTree/models.py:583 InvenTree/models.py:584 common/models.py:2494 -#: common/models.py:2495 common/models.py:2719 common/models.py:2720 -#: common/models.py:2965 common/models.py:2966 part/models.py:3185 -#: part/models.py:3272 part/models.py:3365 part/models.py:3393 -#: plugin/models.py:250 plugin/models.py:251 -#: report/templates/report/inventree_test_report_base.html:105 +#: InvenTree/models.py:597 InvenTree/models.py:598 common/models.py:2517 +#: common/models.py:2518 common/models.py:2742 common/models.py:2743 +#: common/models.py:2988 common/models.py:2989 part/models.py:3228 +#: part/models.py:3315 part/models.py:3408 part/models.py:3436 +#: plugin/models.py:259 plugin/models.py:260 +#: report/templates/report/inventree_test_report.html:105 #: templates/js/translated/stock.js:3036 users/models.py:111 msgid "User" msgstr "Uživatel" -#: InvenTree/models.py:588 +#: InvenTree/models.py:602 msgid "upload date" msgstr "datum přidání" -#: InvenTree/models.py:610 +#: InvenTree/models.py:624 msgid "Filename must not be empty" msgstr "Název souboru nesmí být prázdný" -#: InvenTree/models.py:621 +#: InvenTree/models.py:635 msgid "Invalid attachment directory" msgstr "Neplatný adresář přílohy" -#: InvenTree/models.py:651 +#: InvenTree/models.py:665 #, python-brace-format msgid "Filename contains illegal character '{c}'" msgstr "Název souboru obsahuje nepovolený znak '{c}'" -#: InvenTree/models.py:654 +#: InvenTree/models.py:668 msgid "Filename missing extension" msgstr "Chybějící přípona souboru" -#: InvenTree/models.py:663 +#: InvenTree/models.py:677 msgid "Attachment with this filename already exists" msgstr "Příloha s tímto názvem již existuje" -#: InvenTree/models.py:670 +#: InvenTree/models.py:684 msgid "Error renaming file" msgstr "Chyba při přejmenování souboru" -#: InvenTree/models.py:846 +#: InvenTree/models.py:860 msgid "Duplicate names cannot exist under the same parent" msgstr "Duplicitní názvy nemohou existovat pod stejným nadřazeným názvem" -#: InvenTree/models.py:863 +#: InvenTree/models.py:877 msgid "Invalid choice" msgstr "Neplatný výběr" -#: InvenTree/models.py:893 common/models.py:2706 common/models.py:3104 -#: common/serializers.py:370 company/models.py:613 label/models.py:120 -#: machine/models.py:24 part/models.py:855 part/models.py:3616 -#: plugin/models.py:41 report/models.py:176 stock/models.py:76 +#: InvenTree/models.py:907 common/models.py:2729 common/models.py:3127 +#: common/serializers.py:403 company/models.py:614 machine/models.py:24 +#: part/models.py:898 part/models.py:3659 plugin/models.py:50 +#: report/models.py:149 stock/models.py:72 #: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/notifications.html:17 -#: templates/InvenTree/settings/plugin.html:81 +#: templates/InvenTree/settings/plugin.html:83 #: templates/InvenTree/settings/plugin_settings.html:22 #: templates/InvenTree/settings/settings_staff_js.html:67 #: templates/InvenTree/settings/settings_staff_js.html:446 @@ -499,98 +503,98 @@ msgstr "Neplatný výběr" #: templates/js/translated/company.js:1165 #: templates/js/translated/company.js:1413 templates/js/translated/part.js:1186 #: templates/js/translated/part.js:1474 templates/js/translated/part.js:1610 -#: templates/js/translated/part.js:2749 templates/js/translated/stock.js:2716 +#: templates/js/translated/part.js:2748 templates/js/translated/stock.js:2716 msgid "Name" msgstr "Název" -#: InvenTree/models.py:899 build/models.py:188 +#: InvenTree/models.py:913 build/models.py:218 #: build/templates/build/detail.html:24 common/models.py:136 -#: company/models.py:522 company/models.py:838 +#: company/models.py:523 company/models.py:840 #: company/templates/company/company_base.html:77 #: company/templates/company/manufacturer_part.html:75 -#: company/templates/company/supplier_part.html:107 label/models.py:127 -#: order/models.py:277 order/models.py:1316 part/admin.py:303 part/admin.py:414 -#: part/models.py:878 part/models.py:3631 part/templates/part/category.html:82 +#: company/templates/company/supplier_part.html:107 order/models.py:289 +#: order/models.py:1365 part/admin.py:305 part/admin.py:416 part/models.py:921 +#: part/models.py:3674 part/templates/part/category.html:82 #: part/templates/part/part_base.html:170 -#: part/templates/part/part_scheduling.html:12 report/models.py:189 -#: report/models.py:655 report/models.py:729 -#: report/templates/report/inventree_build_order_base.html:117 -#: stock/admin.py:55 stock/models.py:82 stock/templates/stock/location.html:125 +#: part/templates/part/part_scheduling.html:12 report/models.py:155 +#: report/models.py:509 report/models.py:535 +#: report/templates/report/inventree_build_order_report.html:117 +#: stock/admin.py:55 stock/models.py:78 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:519 +#: templates/js/translated/build.js:2139 templates/js/translated/company.js:519 #: templates/js/translated/company.js:1330 #: templates/js/translated/company.js:1641 templates/js/translated/index.js:119 #: templates/js/translated/order.js:298 templates/js/translated/part.js:1238 #: templates/js/translated/part.js:1483 templates/js/translated/part.js:1621 -#: templates/js/translated/part.js:1958 templates/js/translated/part.js:2355 -#: templates/js/translated/part.js:2785 templates/js/translated/part.js:2896 +#: templates/js/translated/part.js:1958 templates/js/translated/part.js:2354 +#: templates/js/translated/part.js:2784 templates/js/translated/part.js:2895 #: templates/js/translated/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/purchase_order.js:1706 +#: templates/js/translated/purchase_order.js:1849 +#: templates/js/translated/purchase_order.js:2022 +#: templates/js/translated/return_order.js:313 +#: templates/js/translated/sales_order.js:838 +#: templates/js/translated/sales_order.js:1848 +#: templates/js/translated/stock.js:1515 templates/js/translated/stock.js:2058 #: templates/js/translated/stock.js:2748 templates/js/translated/stock.js:2831 msgid "Description" msgstr "Popis" -#: InvenTree/models.py:900 stock/models.py:83 +#: InvenTree/models.py:914 stock/models.py:79 msgid "Description (optional)" msgstr "Popis (volitelně)" -#: InvenTree/models.py:909 +#: InvenTree/models.py:923 msgid "parent" msgstr "nadřazený" -#: InvenTree/models.py:915 templates/js/translated/part.js:2794 +#: InvenTree/models.py:929 templates/js/translated/part.js:2793 #: templates/js/translated/stock.js:2757 msgid "Path" msgstr "Cesta" -#: InvenTree/models.py:1021 +#: InvenTree/models.py:1035 msgid "Markdown notes (optional)" msgstr "Poznámky (volitelné)" -#: InvenTree/models.py:1050 +#: InvenTree/models.py:1064 msgid "Barcode Data" msgstr "Data čárového kódu" -#: InvenTree/models.py:1051 +#: InvenTree/models.py:1065 msgid "Third party barcode data" msgstr "Data čárového kódu třetí strany" -#: InvenTree/models.py:1057 +#: InvenTree/models.py:1071 msgid "Barcode Hash" msgstr "Hash čárového kódu" -#: InvenTree/models.py:1058 +#: InvenTree/models.py:1072 msgid "Unique hash of barcode data" msgstr "Jedinečný hash dat čárového kódu" -#: InvenTree/models.py:1111 +#: InvenTree/models.py:1125 msgid "Existing barcode found" msgstr "Nalezen existující čárový kód" -#: InvenTree/models.py:1154 +#: InvenTree/models.py:1168 msgid "Server Error" msgstr "Chyba serveru" -#: InvenTree/models.py:1155 +#: InvenTree/models.py:1169 msgid "An error has been logged by the server." msgstr "Server zaznamenal chybu." -#: InvenTree/serializers.py:62 part/models.py:4169 +#: InvenTree/serializers.py:62 part/models.py:4212 msgid "Must be a valid number" msgstr "Musí být platné číslo" #: InvenTree/serializers.py:99 company/models.py:183 -#: company/templates/company/company_base.html:112 part/models.py:2993 +#: company/templates/company/company_base.html:112 part/models.py:3036 #: templates/InvenTree/settings/settings_staff_js.html:44 #: templates/currency_data.html:5 msgid "Currency" @@ -682,7 +686,7 @@ msgstr "URL souboru vzdáleného obrázku" 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:1161 +#: InvenTree/status.py:66 part/serializers.py:1178 msgid "Background worker check failed" msgstr "Kontrola procesů na pozadí se nezdařila" @@ -694,202 +698,6 @@ msgstr "Email backend není nakonfigurován" msgid "InvenTree system health checks failed" msgstr "Kontroly zdraví systému InvenTree selhaly" -#: 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 "Nevyřízeno" - -#: InvenTree/status_codes.py:13 generic/states/tests.py:18 -msgid "Placed" -msgstr "Umístěno" - -#: 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 "Hotovo" - -#: InvenTree/status_codes.py:15 InvenTree/status_codes.py:44 -#: InvenTree/status_codes.py:150 InvenTree/status_codes.py:170 -msgid "Cancelled" -msgstr "Zrušeno" - -#: InvenTree/status_codes.py:16 InvenTree/status_codes.py:45 -#: InvenTree/status_codes.py:67 -msgid "Lost" -msgstr "Ztraceno" - -#: InvenTree/status_codes.py:17 InvenTree/status_codes.py:46 -#: InvenTree/status_codes.py:73 -msgid "Returned" -msgstr "Vráceno" - -#: InvenTree/status_codes.py:40 InvenTree/status_codes.py:167 -msgid "In Progress" -msgstr "Zpracovává se" - -#: InvenTree/status_codes.py:43 order/models.py:1564 -#: templates/js/translated/sales_order.js:1523 -#: templates/js/translated/sales_order.js:1644 -#: templates/js/translated/sales_order.js:1957 -msgid "Shipped" -msgstr "Odesláno" - -#: InvenTree/status_codes.py:62 -msgid "OK" -msgstr "OK" - -#: InvenTree/status_codes.py:63 -msgid "Attention needed" -msgstr "Vyžaduje pozornost" - -#: InvenTree/status_codes.py:64 -msgid "Damaged" -msgstr "Poškozeno" - -#: InvenTree/status_codes.py:65 -msgid "Destroyed" -msgstr "Zničeno" - -#: InvenTree/status_codes.py:66 -msgid "Rejected" -msgstr "Odmítnuto" - -#: InvenTree/status_codes.py:70 -msgid "Quarantined" -msgstr "V karanténě" - -#: InvenTree/status_codes.py:91 -msgid "Legacy stock tracking entry" -msgstr "Původní položka sledování zásob" - -#: InvenTree/status_codes.py:93 templates/js/translated/stock.js:544 -msgid "Stock item created" -msgstr "Položka zásob vytvořena" - -#: InvenTree/status_codes.py:96 -msgid "Edited stock item" -msgstr "Položka zásob upravena" - -#: InvenTree/status_codes.py:97 -msgid "Assigned serial number" -msgstr "Přiřazeno výrobní číslo" - -#: InvenTree/status_codes.py:100 -msgid "Stock counted" -msgstr "Stav zásob sečten" - -#: InvenTree/status_codes.py:101 -msgid "Stock manually added" -msgstr "Zásoba přidána ručně" - -#: InvenTree/status_codes.py:102 -msgid "Stock manually removed" -msgstr "Zásoba odebrána ručně" - -#: InvenTree/status_codes.py:105 -msgid "Location changed" -msgstr "Umístění změněno" - -#: InvenTree/status_codes.py:106 -msgid "Stock updated" -msgstr "Stav zásob byl aktualizován" - -#: InvenTree/status_codes.py:109 -msgid "Installed into assembly" -msgstr "Nainstalováno do sestavy" - -#: InvenTree/status_codes.py:110 -msgid "Removed from assembly" -msgstr "Odstraněno ze sestavy" - -#: InvenTree/status_codes.py:112 -msgid "Installed component item" -msgstr "Instalovaná položka komponenty" - -#: InvenTree/status_codes.py:113 -msgid "Removed component item" -msgstr "Odstraněná komponenta" - -#: InvenTree/status_codes.py:116 -msgid "Split from parent item" -msgstr "Rozdělit od nadřazené položky" - -#: InvenTree/status_codes.py:117 -msgid "Split child item" -msgstr "Rozdělit podřazený předmět" - -#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:1855 -msgid "Merged stock items" -msgstr "Sloučené položky zásob" - -#: InvenTree/status_codes.py:123 -msgid "Converted to variant" -msgstr "Převedeno na variantu" - -#: InvenTree/status_codes.py:126 -msgid "Build order output created" -msgstr "Výstup objednávky byl vytvořen" - -#: InvenTree/status_codes.py:127 -msgid "Build order output completed" -msgstr "Výstup objednávky sestavení dokončen" - -#: InvenTree/status_codes.py:128 -msgid "Build order output rejected" -msgstr "Výstup objednávky sestavení byl odmítnut" - -#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1761 -msgid "Consumed by build order" -msgstr "Spotřebováno podle objednávky" - -#: InvenTree/status_codes.py:132 -msgid "Shipped against Sales Order" -msgstr "Odesláno v souladu se zákaznickou objednávkou" - -#: InvenTree/status_codes.py:135 -msgid "Received against Purchase Order" -msgstr "Přijato proti objednávce" - -#: InvenTree/status_codes.py:138 -msgid "Returned against Return Order" -msgstr "Vráceno proti vratce" - -#: InvenTree/status_codes.py:141 templates/js/translated/table_filters.js:375 -msgid "Sent to customer" -msgstr "Odesláno zákazníkovi" - -#: InvenTree/status_codes.py:142 -msgid "Returned from customer" -msgstr "Vráceno od zákazníka" - -#: InvenTree/status_codes.py:149 -msgid "Production" -msgstr "Výroba" - -#: InvenTree/status_codes.py:185 -msgid "Return" -msgstr "Vrátit zpět" - -#: InvenTree/status_codes.py:188 -msgid "Repair" -msgstr "Oprava" - -#: InvenTree/status_codes.py:191 -msgid "Replace" -msgstr "Náhrada" - -#: InvenTree/status_codes.py:194 -msgid "Refund" -msgstr "Vrácení peněz" - -#: InvenTree/status_codes.py:197 -msgid "Reject" -msgstr "Odmítnout" - #: InvenTree/templatetags/inventree_extras.py:183 msgid "Unknown database" msgstr "Neznámá databáze" @@ -938,45 +746,45 @@ msgstr "Informace o systému" msgid "About InvenTree" msgstr "O InvenTree" -#: build/api.py:238 +#: build/api.py:255 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:282 part/models.py:4047 templates/js/translated/bom.js:997 -#: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2521 +#: build/api.py:299 part/models.py:4090 templates/js/translated/bom.js:997 +#: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2520 #: templates/js/translated/table_filters.js:190 #: templates/js/translated/table_filters.js:583 msgid "Consumable" msgstr "Spotřební materiál" -#: build/api.py:283 part/models.py:4041 part/templates/part/upload_bom.html:58 +#: build/api.py:300 part/models.py:4084 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/build.js:2529 #: templates/js/translated/table_filters.js:186 #: templates/js/translated/table_filters.js:215 #: templates/js/translated/table_filters.js:587 msgid "Optional" msgstr "Volitelné" -#: build/api.py:284 templates/js/translated/table_filters.js:408 +#: build/api.py:301 templates/js/translated/table_filters.js:408 #: templates/js/translated/table_filters.js:579 msgid "Tracked" msgstr "Sledováno" -#: build/api.py:286 part/admin.py:144 templates/js/translated/build.js:1741 -#: templates/js/translated/build.js:2630 -#: templates/js/translated/sales_order.js:1929 +#: build/api.py:303 part/admin.py:144 templates/js/translated/build.js:1744 +#: templates/js/translated/build.js:2629 +#: templates/js/translated/sales_order.js:1965 #: templates/js/translated/table_filters.js:571 msgid "Allocated" msgstr "Přiděleno" -#: build/api.py:294 company/models.py:902 company/serializers.py:383 +#: build/api.py:311 company/models.py:904 company/serializers.py:383 #: 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/bom.js:1162 templates/js/translated/build.js:2561 #: templates/js/translated/index.js:123 -#: templates/js/translated/model_renderers.js:228 +#: templates/js/translated/model_renderers.js:234 #: templates/js/translated/part.js:692 templates/js/translated/part.js:694 #: templates/js/translated/part.js:699 #: templates/js/translated/table_filters.js:340 @@ -984,16 +792,16 @@ msgstr "Přiděleno" msgid "Available" msgstr "Dostupné" -#: build/models.py:74 build/templates/build/build_base.html:9 +#: build/models.py:83 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 +#: report/templates/report/inventree_build_order_report.html:105 +#: stock/serializers.py:83 templates/email/build_order_completed.html:16 #: templates/email/overdue_build_order.html:15 #: templates/js/translated/build.js:972 templates/js/translated/stock.js:2892 msgid "Build Order" msgstr "Vytvořit objednávku" -#: build/models.py:75 build/templates/build/build_base.html:13 +#: build/models.py:84 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 @@ -1004,708 +812,751 @@ msgstr "Vytvořit objednávku" msgid "Build Orders" msgstr "Vytvořené objednávky" -#: build/models.py:116 +#: build/models.py:131 msgid "Invalid choice for parent build" msgstr "Neplatná volba nadřazeného sestavení" -#: build/models.py:127 order/models.py:239 +#: build/models.py:142 order/models.py:240 msgid "Responsible user or group must be specified" msgstr "Musí být specifikován odpovědný uživatel nebo skupina" -#: build/models.py:133 +#: build/models.py:148 msgid "Build order part cannot be changed" msgstr "Díly obědnávky sestavení nemohou být změněny" -#: build/models.py:179 +#: build/models.py:209 msgid "Build Order Reference" msgstr "Referenční číslo objednávky" -#: build/models.py:180 order/models.py:442 order/models.py:898 -#: order/models.py:1276 order/models.py:1996 part/admin.py:417 -#: part/models.py:4062 part/templates/part/upload_bom.html:54 +#: build/models.py:210 order/models.py:463 order/models.py:928 +#: order/models.py:1325 order/models.py:2056 part/admin.py:419 +#: part/models.py:4105 part/templates/part/upload_bom.html:54 #: 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 +#: report/templates/report/inventree_purchase_order_report.html:28 +#: report/templates/report/inventree_return_order_report.html:26 +#: report/templates/report/inventree_sales_order_report.html:28 #: templates/js/translated/bom.js:770 templates/js/translated/bom.js:973 -#: templates/js/translated/build.js:2513 templates/js/translated/order.js:291 +#: templates/js/translated/build.js:2512 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 +#: templates/js/translated/purchase_order.js:2065 +#: templates/js/translated/return_order.js:728 +#: templates/js/translated/sales_order.js:1854 msgid "Reference" msgstr "Reference" -#: build/models.py:191 +#: build/models.py:221 msgid "Brief description of the build (optional)" msgstr "Stručný popis sestavení (nepovinné)" -#: build/models.py:199 build/templates/build/build_base.html:183 +#: build/models.py:229 build/templates/build/build_base.html:183 #: build/templates/build/detail.html:87 msgid "Parent Build" msgstr "Nadřazená sestava" -#: build/models.py:200 +#: build/models.py:230 msgid "BuildOrder to which this build is allocated" msgstr "Příkaz sestavení pro který je toto sestavení přiděleno" -#: build/models.py:205 build/templates/build/build_base.html:97 -#: build/templates/build/detail.html:29 company/models.py:1056 order/api.py:817 -#: order/models.py:1401 order/models.py:1544 order/models.py:1545 -#: part/api.py:1547 part/api.py:1841 part/models.py:390 part/models.py:3004 -#: part/models.py:3148 part/models.py:3292 part/models.py:3315 -#: part/models.py:3336 part/models.py:3358 part/models.py:3468 -#: part/models.py:3764 part/models.py:3920 part/models.py:4013 -#: part/models.py:4374 part/serializers.py:1107 part/serializers.py:1713 +#: build/models.py:235 build/templates/build/build_base.html:97 +#: build/templates/build/detail.html:29 company/models.py:1058 order/api.py:821 +#: order/models.py:1450 order/models.py:1595 order/models.py:1596 +#: part/api.py:1501 part/api.py:1795 part/models.py:392 part/models.py:3047 +#: part/models.py:3191 part/models.py:3335 part/models.py:3358 +#: part/models.py:3379 part/models.py:3401 part/models.py:3511 +#: part/models.py:3807 part/models.py:3963 part/models.py:4056 +#: part/models.py:4417 part/serializers.py:1124 part/serializers.py:1730 #: 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 +#: report/templates/report/inventree_build_order_report.html:109 +#: report/templates/report/inventree_purchase_order_report.html:27 +#: report/templates/report/inventree_return_order_report.html:24 +#: report/templates/report/inventree_sales_order_report.html:27 +#: report/templates/report/inventree_stock_location_report.html:102 +#: stock/serializers.py:110 stock/serializers.py:158 stock/serializers.py:396 +#: stock/serializers.py:818 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/build.js:1312 templates/js/translated/build.js:1743 +#: templates/js/translated/build.js:2162 templates/js/translated/build.js:2335 #: templates/js/translated/company.js:348 #: templates/js/translated/company.js:1116 #: templates/js/translated/company.js:1271 #: templates/js/translated/company.js:1559 templates/js/translated/index.js:109 #: templates/js/translated/part.js:1943 templates/js/translated/part.js:2015 -#: templates/js/translated/part.js:2324 templates/js/translated/pricing.js:369 +#: templates/js/translated/part.js:2323 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/purchase_order.js:1848 +#: templates/js/translated/purchase_order.js:2007 +#: templates/js/translated/return_order.js:538 +#: templates/js/translated/return_order.js:709 #: templates/js/translated/sales_order.js:300 -#: templates/js/translated/sales_order.js:1197 -#: templates/js/translated/sales_order.js:1598 -#: templates/js/translated/sales_order.js:1796 +#: templates/js/translated/sales_order.js:1233 +#: templates/js/translated/sales_order.js:1634 +#: templates/js/translated/sales_order.js:1832 #: templates/js/translated/stock.js:676 templates/js/translated/stock.js:842 -#: templates/js/translated/stock.js:1058 templates/js/translated/stock.js:1996 +#: templates/js/translated/stock.js:1058 templates/js/translated/stock.js:1997 #: templates/js/translated/stock.js:2857 templates/js/translated/stock.js:3090 #: templates/js/translated/stock.js:3236 msgid "Part" msgstr "Díl" -#: build/models.py:213 +#: build/models.py:243 msgid "Select part to build" msgstr "Vyber téma, které chceš stavět" -#: build/models.py:218 +#: build/models.py:248 msgid "Sales Order Reference" msgstr "Referenční číslo prodejní objednávky" -#: build/models.py:222 +#: build/models.py:252 msgid "SalesOrder to which this build is allocated" msgstr "Prodejní příkaz, kterému je tato verze přidělena" -#: build/models.py:227 build/serializers.py:964 -#: templates/js/translated/build.js:1728 -#: templates/js/translated/sales_order.js:1185 +#: build/models.py:257 build/serializers.py:1000 +#: templates/js/translated/build.js:1731 +#: templates/js/translated/sales_order.js:1221 msgid "Source Location" msgstr "Umístění lokace" -#: build/models.py:231 +#: build/models.py:261 msgid "Select location to take stock from for this build (leave blank to take from any stock location)" msgstr "Vyberte lokaci, ze které chcete provést inventuru pro sestavu. (nechte prázdné, chcete-li provést inventuru z libovolné lokace)" -#: build/models.py:236 +#: build/models.py:266 msgid "Destination Location" msgstr "Cílová lokace" -#: build/models.py:240 +#: build/models.py:270 msgid "Select location where the completed items will be stored" msgstr "Vyberte lokaci, kde budou dokončené položky uloženy" -#: build/models.py:244 +#: build/models.py:274 msgid "Build Quantity" msgstr "Množství sestav" -#: build/models.py:247 +#: build/models.py:277 msgid "Number of stock items to build" msgstr "Počet skladových položek k sestavení" -#: build/models.py:251 +#: build/models.py:281 msgid "Completed items" msgstr "Dokončené položky" -#: build/models.py:253 +#: build/models.py:283 msgid "Number of stock items which have been completed" msgstr "Počet skladových položek, které byly dokončeny" -#: build/models.py:257 +#: build/models.py:287 msgid "Build Status" msgstr "Stav sestavení" -#: build/models.py:261 +#: build/models.py:291 msgid "Build status code" msgstr "Stavový kód sestavení" -#: build/models.py:270 build/serializers.py:280 order/serializers.py:577 -#: stock/models.py:823 stock/serializers.py:1333 +#: build/models.py:300 build/serializers.py:287 order/serializers.py:581 +#: stock/models.py:840 stock/serializers.py:75 stock/serializers.py:1462 #: templates/js/translated/purchase_order.js:1129 msgid "Batch Code" msgstr "Kód dávky" -#: build/models.py:274 build/serializers.py:281 +#: build/models.py:304 build/serializers.py:288 msgid "Batch code for this build output" msgstr "Dávkový kód pro tento výstup sestavení" -#: build/models.py:277 order/models.py:304 part/models.py:1079 -#: part/templates/part/part_base.html:310 -#: templates/js/translated/return_order.js:339 -#: templates/js/translated/sales_order.js:827 +#: build/models.py:307 order/models.py:316 order/serializers.py:120 +#: part/models.py:1122 part/templates/part/part_base.html:310 +#: templates/js/translated/return_order.js:338 +#: templates/js/translated/sales_order.js:863 msgid "Creation Date" msgstr "Datum vytvoření" -#: build/models.py:281 +#: build/models.py:311 msgid "Target completion date" msgstr "Cílové datum dokončení" -#: build/models.py:282 +#: build/models.py:312 msgid "Target date for build completion. Build will be overdue after this date." msgstr "Cílové datum dokončení sestavení. Sestavení bude po tomto datu v prodlení." -#: build/models.py:285 order/models.py:500 order/models.py:2041 -#: templates/js/translated/build.js:2245 +#: build/models.py:315 order/models.py:521 order/models.py:2101 +#: templates/js/translated/build.js:2247 msgid "Completion Date" msgstr "Datum dokončení" -#: build/models.py:291 +#: build/models.py:321 msgid "completed by" msgstr "dokončil" -#: build/models.py:299 templates/js/translated/build.js:2205 +#: build/models.py:329 templates/js/translated/build.js:2207 msgid "Issued by" msgstr "Vystavil" -#: build/models.py:300 +#: build/models.py:330 msgid "User who issued this build order" msgstr "Uživatel, který vydal tento příkaz k sestavení" -#: build/models.py:308 build/templates/build/build_base.html:204 +#: build/models.py:338 build/templates/build/build_base.html:204 #: build/templates/build/detail.html:122 common/models.py:145 -#: order/models.py:322 order/templates/order/order_base.html:217 +#: order/models.py:334 order/templates/order/order_base.html:217 #: order/templates/order/return_order_base.html:188 -#: order/templates/order/sales_order_base.html:228 part/models.py:1096 +#: order/templates/order/sales_order_base.html:232 part/models.py:1139 #: part/templates/part/part_base.html:390 -#: report/templates/report/inventree_build_order_base.html:158 +#: report/templates/report/inventree_build_order_report.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/build.js:2219 +#: templates/js/translated/purchase_order.js:1763 +#: templates/js/translated/return_order.js:358 #: templates/js/translated/table_filters.js:531 msgid "Responsible" msgstr "Odpovědný" -#: build/models.py:309 +#: build/models.py:339 msgid "User or group responsible for this build order" msgstr "Uživatel nebo skupina odpovědná za tento příkaz k sestavení" -#: build/models.py:314 build/templates/build/detail.html:108 +#: build/models.py:344 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:819 +#: order/templates/order/sales_order_base.html:184 +#: part/templates/part/part_base.html:383 stock/models.py:836 #: stock/templates/stock/item_base.html:200 #: templates/js/translated/company.js:1019 msgid "External Link" msgstr "Externí odkaz" -#: build/models.py:319 +#: build/models.py:349 msgid "Build Priority" msgstr "Priorita sestavení" -#: build/models.py:322 +#: build/models.py:352 msgid "Priority of this build order" msgstr "Priorita tohoto příkazu k sestavení" -#: build/models.py:329 common/models.py:129 order/admin.py:18 -#: order/models.py:286 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 +#: build/models.py:359 common/models.py:129 order/admin.py:18 +#: order/models.py:298 templates/InvenTree/settings/settings_staff_js.html:146 +#: templates/js/translated/build.js:2144 +#: templates/js/translated/purchase_order.js:1710 +#: templates/js/translated/return_order.js:317 +#: templates/js/translated/sales_order.js:842 #: templates/js/translated/table_filters.js:48 #: templates/project_code_data.html:6 msgid "Project Code" msgstr "Kód projektu" -#: build/models.py:330 +#: build/models.py:360 msgid "Project code for this build order" msgstr "Kód projektu pro objednávku sestavení" -#: build/models.py:581 +#: build/models.py:593 build/models.py:658 +msgid "Failed to offload task to complete build allocations" +msgstr "" + +#: build/models.py:615 #, python-brace-format msgid "Build order {build} has been completed" msgstr "Příkaz k sestavení {build} byl dokončen" -#: build/models.py:587 +#: build/models.py:621 msgid "A build order has been completed" msgstr "Příkaz k sestavení byl dokončen" -#: build/models.py:805 build/models.py:880 +#: build/models.py:847 build/models.py:932 msgid "No build output specified" msgstr "Nebyl specifikováno žádný výstup sestavení" -#: build/models.py:808 +#: build/models.py:850 msgid "Build output is already completed" msgstr "Výstup sestavení je již dokončen" -#: build/models.py:811 +#: build/models.py:853 msgid "Build output does not match Build Order" msgstr "Výstup sestavení neodpovídá příkazu sestavení" -#: build/models.py:884 build/serializers.py:223 build/serializers.py:262 -#: build/serializers.py:831 order/models.py:538 order/serializers.py:429 -#: order/serializers.py:572 part/serializers.py:1471 part/serializers.py:1871 -#: stock/models.py:662 stock/models.py:1474 stock/serializers.py:472 +#: build/models.py:936 build/serializers.py:220 build/serializers.py:269 +#: build/serializers.py:867 order/models.py:559 order/serializers.py:433 +#: order/serializers.py:576 part/serializers.py:1488 part/serializers.py:1888 +#: stock/models.py:679 stock/models.py:1499 stock/serializers.py:601 msgid "Quantity must be greater than zero" msgstr "Množství musí být vyšší než nula" -#: build/models.py:889 build/serializers.py:228 +#: build/models.py:941 build/serializers.py:225 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:946 build/serializers.py:533 +#: build/models.py:1001 build/serializers.py:548 #, python-brace-format msgid "Build output {serial} has not passed all required tests" msgstr "Výstup sestavy {serial} neprošel všemi požadavky" -#: build/models.py:1308 +#: build/models.py:1352 +msgid "Build Order Line Item" +msgstr "" + +#: build/models.py:1377 msgid "Build object" msgstr "Vytvořit objekt" -#: build/models.py:1322 build/models.py:1578 build/serializers.py:210 -#: build/serializers.py:247 build/templates/build/build_base.html:102 -#: build/templates/build/detail.html:34 common/models.py:2516 -#: order/models.py:1259 order/models.py:1916 order/serializers.py:1335 -#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:416 -#: part/forms.py:48 part/models.py:3162 part/models.py:4035 +#: build/models.py:1391 build/models.py:1647 build/serializers.py:207 +#: build/serializers.py:254 build/templates/build/build_base.html:102 +#: build/templates/build/detail.html:34 common/models.py:2539 +#: order/models.py:1308 order/models.py:1967 order/serializers.py:1339 +#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:418 +#: part/forms.py:48 part/models.py:3205 part/models.py:4078 #: 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 +#: report/templates/report/inventree_build_order_report.html:113 +#: report/templates/report/inventree_purchase_order_report.html:29 +#: report/templates/report/inventree_sales_order_report.html:29 +#: report/templates/report/inventree_stock_location_report.html:104 +#: report/templates/report/inventree_test_report.html:90 +#: report/templates/report/inventree_test_report.html:170 stock/admin.py:160 +#: stock/serializers.py:126 stock/serializers.py:166 stock/serializers.py:592 #: 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/build.js:737 templates/js/translated/build.js:1369 +#: templates/js/translated/build.js:1746 templates/js/translated/build.js:2357 #: templates/js/translated/company.js:1818 -#: templates/js/translated/model_renderers.js:230 +#: templates/js/translated/model_renderers.js:236 #: templates/js/translated/order.js:304 templates/js/translated/part.js:961 -#: templates/js/translated/part.js:1811 templates/js/translated/part.js:3341 +#: templates/js/translated/part.js:1811 templates/js/translated/part.js:3340 #: 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/purchase_order.js:1852 +#: templates/js/translated/purchase_order.js:2071 #: 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/sales_order.js:1235 +#: templates/js/translated/sales_order.js:1554 +#: templates/js/translated/sales_order.js:1644 +#: templates/js/translated/sales_order.js:1734 +#: templates/js/translated/sales_order.js:1860 #: templates/js/translated/stock.js:564 templates/js/translated/stock.js:702 #: templates/js/translated/stock.js:873 templates/js/translated/stock.js:3021 #: templates/js/translated/stock.js:3104 msgid "Quantity" msgstr "Množství" -#: build/models.py:1323 +#: build/models.py:1392 msgid "Required quantity for build order" msgstr "Vyžadované množství pro objednávku" -#: build/models.py:1403 +#: build/models.py:1472 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:1412 +#: build/models.py:1481 #, 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:1422 order/models.py:1867 +#: build/models.py:1491 order/models.py:1918 msgid "Stock item is over-allocated" msgstr "Skladová položka je nadměrně zabrána" -#: build/models.py:1428 order/models.py:1870 +#: build/models.py:1497 order/models.py:1921 msgid "Allocation quantity must be greater than zero" msgstr "Zabrané množství musí být větší než nula" -#: build/models.py:1434 +#: build/models.py:1503 msgid "Quantity must be 1 for serialized stock" msgstr "Množství musí být 1 pro zřetězený sklad" -#: build/models.py:1493 +#: build/models.py:1562 msgid "Selected stock item does not match BOM line" msgstr "Vybraná položka zásob neodpovídá řádku BOM" -#: build/models.py:1565 build/serializers.py:811 order/serializers.py:1179 -#: order/serializers.py:1200 stock/serializers.py:566 stock/serializers.py:1052 -#: stock/serializers.py:1164 stock/templates/stock/item_base.html:10 +#: build/models.py:1634 build/serializers.py:847 order/serializers.py:1183 +#: order/serializers.py:1204 stock/models.py:360 stock/serializers.py:92 +#: stock/serializers.py:695 stock/serializers.py:1181 stock/serializers.py:1293 +#: 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/build.js:1745 #: 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/sales_order.js:1234 +#: templates/js/translated/sales_order.js:1535 +#: templates/js/translated/sales_order.js:1540 +#: templates/js/translated/sales_order.js:1641 +#: templates/js/translated/sales_order.js:1728 #: templates/js/translated/stock.js:677 templates/js/translated/stock.js:843 #: templates/js/translated/stock.js:2977 msgid "Stock Item" msgstr "Skladové položky" -#: build/models.py:1566 +#: build/models.py:1635 msgid "Source stock item" msgstr "Zdrojová skladová položka" -#: build/models.py:1579 +#: build/models.py:1648 msgid "Stock quantity to allocate to build" msgstr "Skladové množství pro sestavení" -#: build/models.py:1587 +#: build/models.py:1656 msgid "Install into" msgstr "Instalovat do" -#: build/models.py:1588 +#: build/models.py:1657 msgid "Destination stock item" msgstr "Cílová skladová položka" -#: build/serializers.py:160 build/serializers.py:840 -#: templates/js/translated/build.js:1319 +#: build/serializers.py:157 build/serializers.py:876 +#: templates/js/translated/build.js:1322 msgid "Build Output" msgstr "Vytvořit výstup" -#: build/serializers.py:172 +#: build/serializers.py:169 msgid "Build output does not match the parent build" msgstr "Vytvořený výstup neodpovídá nadřazenému sestavení" -#: build/serializers.py:176 +#: build/serializers.py:173 msgid "Output part does not match BuildOrder part" msgstr "Výstupní část se neshoduje s částí příkazu sestavení" -#: build/serializers.py:180 +#: build/serializers.py:177 msgid "This build output has already been completed" msgstr "Výstup sestavení je již dokončen" -#: build/serializers.py:191 +#: build/serializers.py:188 msgid "This build output is not fully allocated" msgstr "Tento stavební výstup není plně přiřazen" -#: build/serializers.py:211 build/serializers.py:248 +#: build/serializers.py:208 build/serializers.py:255 msgid "Enter quantity for build output" msgstr "Zadejte množství pro výstup sestavení" -#: build/serializers.py:269 +#: build/serializers.py:276 msgid "Integer quantity required for trackable parts" msgstr "Celé množství požadované pro sledovatelné díly" -#: build/serializers.py:272 +#: build/serializers.py:279 msgid "Integer quantity required, as the bill of materials contains trackable parts" msgstr "Je vyžadována celočíselná hodnota množství, protože kusovník obsahuje sledovatelné díly" -#: build/serializers.py:287 order/serializers.py:585 order/serializers.py:1339 -#: stock/serializers.py:483 templates/js/translated/purchase_order.js:1153 +#: build/serializers.py:294 order/serializers.py:589 order/serializers.py:1343 +#: stock/serializers.py:612 templates/js/translated/purchase_order.js:1153 #: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565 msgid "Serial Numbers" msgstr "Sériová čísla" -#: build/serializers.py:288 +#: build/serializers.py:295 msgid "Enter serial numbers for build outputs" msgstr "" -#: build/serializers.py:301 -msgid "Auto Allocate Serial Numbers" -msgstr "Automaticky zvolit sériová čísla" - -#: build/serializers.py:302 -msgid "Automatically allocate required items with matching serial numbers" -msgstr "" - -#: build/serializers.py:337 stock/api.py:995 -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:561 -#: order/serializers.py:669 order/serializers.py:1675 part/serializers.py:1127 -#: 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 +#: build/serializers.py:300 build/serializers.py:441 build/serializers.py:513 +#: order/serializers.py:565 order/serializers.py:673 order/serializers.py:1679 +#: part/serializers.py:1144 stock/serializers.py:101 stock/serializers.py:623 +#: stock/serializers.py:783 stock/serializers.py:879 stock/serializers.py:1325 +#: stock/serializers.py:1581 stock/templates/stock/item_base.html:394 #: 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/barcode.js:795 templates/js/translated/build.js:1001 +#: templates/js/translated/build.js:2372 #: templates/js/translated/purchase_order.js:1178 #: templates/js/translated/purchase_order.js:1268 -#: templates/js/translated/sales_order.js: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/sales_order.js:1547 +#: templates/js/translated/sales_order.js:1655 +#: templates/js/translated/sales_order.js:1663 +#: templates/js/translated/sales_order.js:1742 #: templates/js/translated/stock.js:678 templates/js/translated/stock.js:844 -#: templates/js/translated/stock.js:1060 templates/js/translated/stock.js:2200 +#: templates/js/translated/stock.js:1060 templates/js/translated/stock.js:2201 #: templates/js/translated/stock.js:2871 msgid "Location" msgstr "Lokace" -#: build/serializers.py:427 +#: build/serializers.py:301 +msgid "Stock location for build output" +msgstr "" + +#: build/serializers.py:315 +msgid "Auto Allocate Serial Numbers" +msgstr "Automaticky zvolit sériová čísla" + +#: build/serializers.py:316 +msgid "Automatically allocate required items with matching serial numbers" +msgstr "" + +#: build/serializers.py:331 +msgid "Serial numbers must be provided for trackable parts" +msgstr "" + +#: build/serializers.py:356 stock/api.py:1031 +msgid "The following serial numbers already exist or are invalid" +msgstr "" + +#: build/serializers.py:403 build/serializers.py:465 build/serializers.py:554 +msgid "A list of build outputs must be provided" +msgstr "" + +#: build/serializers.py:442 msgid "Stock location for scrapped outputs" msgstr "Umístění zásob pro seškrábnuté výstupy" -#: build/serializers.py:433 +#: build/serializers.py:448 msgid "Discard Allocations" msgstr "" -#: build/serializers.py:434 +#: build/serializers.py:449 msgid "Discard any stock allocations for scrapped outputs" msgstr "" -#: build/serializers.py:439 +#: build/serializers.py:454 msgid "Reason for scrapping build output(s)" msgstr "" -#: build/serializers.py:499 +#: build/serializers.py:514 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:922 -#: order/models.py:2020 order/serializers.py:593 stock/admin.py:165 -#: stock/serializers.py:801 stock/serializers.py:1340 +#: build/serializers.py:520 build/templates/build/build_base.html:151 +#: build/templates/build/detail.html:62 order/models.py:952 +#: order/models.py:2080 order/serializers.py:597 stock/admin.py:165 +#: stock/serializers.py:930 stock/serializers.py:1469 #: stock/templates/stock/item_base.html:427 -#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2189 +#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2191 #: templates/js/translated/purchase_order.js:1308 -#: templates/js/translated/purchase_order.js: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/purchase_order.js:1722 +#: templates/js/translated/return_order.js:330 +#: templates/js/translated/sales_order.js:855 +#: templates/js/translated/stock.js:2176 templates/js/translated/stock.js:2995 #: templates/js/translated/stock.js:3120 msgid "Status" msgstr "Stav" -#: build/serializers.py:511 +#: build/serializers.py:526 msgid "Accept Incomplete Allocation" msgstr "" -#: build/serializers.py:512 +#: build/serializers.py:527 msgid "Complete outputs if stock has not been fully allocated" msgstr "" -#: build/serializers.py:592 -msgid "Remove Allocated Stock" +#: build/serializers.py:612 +msgid "Consume Allocated Stock" msgstr "" -#: build/serializers.py:593 -msgid "Subtract any stock which has already been allocated to this build" +#: build/serializers.py:613 +msgid "Consume any stock which has already been allocated to this build" msgstr "" -#: build/serializers.py:599 +#: build/serializers.py:619 msgid "Remove Incomplete Outputs" msgstr "" -#: build/serializers.py:600 +#: build/serializers.py:620 msgid "Delete any build outputs which have not been completed" msgstr "" -#: build/serializers.py:627 +#: build/serializers.py:647 msgid "Not permitted" msgstr "" -#: build/serializers.py:628 +#: build/serializers.py:648 msgid "Accept as consumed by this build order" msgstr "" -#: build/serializers.py:629 +#: build/serializers.py:649 msgid "Deallocate before completing this build order" msgstr "" -#: build/serializers.py:651 +#: build/serializers.py:679 msgid "Overallocated Stock" msgstr "" -#: build/serializers.py:653 +#: build/serializers.py:681 msgid "How do you want to handle extra stock items assigned to the build order" msgstr "" -#: build/serializers.py:663 +#: build/serializers.py:691 msgid "Some stock items have been overallocated" msgstr "" -#: build/serializers.py:668 +#: build/serializers.py:696 msgid "Accept Unallocated" msgstr "" -#: build/serializers.py:669 +#: build/serializers.py:697 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 +#: build/serializers.py:707 templates/js/translated/build.js:315 msgid "Required stock has not been fully allocated" msgstr "" -#: build/serializers.py:684 order/serializers.py:297 order/serializers.py:1242 +#: build/serializers.py:712 order/serializers.py:301 order/serializers.py:1246 msgid "Accept Incomplete" msgstr "" -#: build/serializers.py:685 +#: build/serializers.py:713 msgid "Accept that the required number of build outputs have not been completed" msgstr "" -#: build/serializers.py:695 templates/js/translated/build.js:319 +#: build/serializers.py:723 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 +#: build/serializers.py:732 templates/js/translated/build.js:303 msgid "Build order has incomplete outputs" msgstr "" -#: build/serializers.py:734 +#: build/serializers.py:770 msgid "Build Line" msgstr "" -#: build/serializers.py:744 +#: build/serializers.py:780 msgid "Build output" msgstr "" -#: build/serializers.py:752 +#: build/serializers.py:788 msgid "Build output must point to the same build" msgstr "" -#: build/serializers.py:788 +#: build/serializers.py:824 msgid "Build Line Item" msgstr "" -#: build/serializers.py:802 +#: build/serializers.py:838 msgid "bom_item.part must point to the same part as the build order" msgstr "" -#: build/serializers.py:817 stock/serializers.py:1065 +#: build/serializers.py:853 stock/serializers.py:1194 msgid "Item must be in stock" msgstr "" -#: build/serializers.py:865 order/serializers.py:1233 +#: build/serializers.py:901 order/serializers.py:1237 #, python-brace-format msgid "Available quantity ({q}) exceeded" msgstr "" -#: build/serializers.py:871 +#: build/serializers.py:907 msgid "Build output must be specified for allocation of tracked parts" msgstr "" -#: build/serializers.py:878 +#: build/serializers.py:914 msgid "Build output cannot be specified for allocation of untracked parts" msgstr "" -#: build/serializers.py:902 order/serializers.py:1485 +#: build/serializers.py:938 order/serializers.py:1489 msgid "Allocation items must be provided" msgstr "" -#: build/serializers.py:965 +#: build/serializers.py:1001 msgid "Stock location where parts are to be sourced (leave blank to take from any location)" msgstr "" -#: build/serializers.py:973 +#: build/serializers.py:1009 msgid "Exclude Location" msgstr "Vynechat lokace" -#: build/serializers.py:974 +#: build/serializers.py:1010 msgid "Exclude stock items from this selected location" msgstr "" -#: build/serializers.py:979 +#: build/serializers.py:1015 msgid "Interchangeable Stock" msgstr "" -#: build/serializers.py:980 +#: build/serializers.py:1016 msgid "Stock items in multiple locations can be used interchangeably" msgstr "" -#: build/serializers.py:985 +#: build/serializers.py:1021 msgid "Substitute Stock" msgstr "" -#: build/serializers.py:986 +#: build/serializers.py:1022 msgid "Allow allocation of substitute parts" msgstr "" -#: build/serializers.py:991 +#: build/serializers.py:1027 msgid "Optional Items" msgstr "Volitelné položky" -#: build/serializers.py:992 +#: build/serializers.py:1028 msgid "Allocate optional BOM items to build order" msgstr "" -#: build/serializers.py:1097 part/models.py:3930 part/models.py:4366 -#: stock/api.py:758 +#: build/serializers.py:1050 +msgid "Failed to start auto-allocation task" +msgstr "" + +#: build/serializers.py:1140 part/models.py:3973 part/models.py:4409 +#: stock/api.py:794 msgid "BOM Item" msgstr "" -#: build/serializers.py:1106 templates/js/translated/index.js:130 +#: build/serializers.py:1149 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:817 part/serializers.py:1489 +#: build/serializers.py:1154 part/admin.py:132 part/bom.py:173 +#: part/serializers.py:832 part/serializers.py:1506 #: 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/build.js:2613 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:1491 -#: templates/js/translated/build.js:2618 +#: build/serializers.py:1159 part/serializers.py:1508 +#: templates/js/translated/build.js:2617 #: templates/js/translated/table_filters.js:360 msgid "In Production" msgstr "" -#: build/serializers.py:1121 part/bom.py:172 part/serializers.py:1514 +#: build/serializers.py:1164 part/bom.py:172 part/serializers.py:1531 #: part/templates/part/part_base.html:192 -#: templates/js/translated/sales_order.js:1893 +#: templates/js/translated/sales_order.js:1929 msgid "Available Stock" msgstr "" -#: build/tasks.py:172 +#: build/status_codes.py:11 generic/states/tests.py:17 order/status_codes.py:12 +#: order/status_codes.py:37 order/status_codes.py:64 order/status_codes.py:82 +#: templates/js/translated/table_filters.js:598 +msgid "Pending" +msgstr "Nevyřízeno" + +#: build/status_codes.py:12 +msgid "Production" +msgstr "Výroba" + +#: build/status_codes.py:13 order/status_codes.py:15 order/status_codes.py:45 +#: order/status_codes.py:70 +msgid "Cancelled" +msgstr "Zrušeno" + +#: build/status_codes.py:14 generic/states/tests.py:19 order/status_codes.py:14 +#: order/status_codes.py:44 order/status_codes.py:69 +#: order/templates/order/order_base.html:158 +#: order/templates/order/sales_order_base.html:165 report/models.py:443 +msgid "Complete" +msgstr "Hotovo" + +#: build/tasks.py:184 msgid "Stock required for build order" msgstr "" -#: build/tasks.py:189 +#: build/tasks.py:201 msgid "Overdue Build Order" msgstr "" -#: build/tasks.py:194 +#: build/tasks.py:206 #, python-brace-format msgid "Build order {bo} is now overdue" msgstr "" @@ -1822,18 +1673,18 @@ 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:297 -#: order/models.py:1294 order/templates/order/order_base.html:186 +#: build/templates/build/detail.html:138 order/models.py:309 +#: order/models.py:1343 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 +#: order/templates/order/sales_order_base.html:196 +#: report/templates/report/inventree_build_order_report.html:125 +#: templates/js/translated/build.js:2239 templates/js/translated/part.js:1830 +#: templates/js/translated/purchase_order.js:1739 +#: templates/js/translated/purchase_order.js:2147 +#: templates/js/translated/return_order.js:346 +#: templates/js/translated/return_order.js:750 +#: templates/js/translated/sales_order.js:871 +#: templates/js/translated/sales_order.js:1903 msgid "Target Date" msgstr "Cílené datum" @@ -1846,7 +1697,7 @@ msgstr "" #: 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 +#: order/templates/order/sales_order_base.html:126 #: templates/js/translated/table_filters.js:98 #: templates/js/translated/table_filters.js:524 #: templates/js/translated/table_filters.js:626 @@ -1860,42 +1711,42 @@ msgid "Completed Outputs" msgstr "" #: build/templates/build/build_base.html:190 -#: build/templates/build/detail.html:101 order/api.py:1507 order/models.py:1536 -#: order/models.py:1650 order/models.py:1804 +#: build/templates/build/detail.html:101 order/api.py:1511 order/models.py:847 +#: order/models.py:1587 order/models.py:1701 order/models.py:1855 #: 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 +#: report/templates/report/inventree_build_order_report.html:135 +#: report/templates/report/inventree_sales_order_report.html:14 #: stock/templates/stock/item_base.html:369 #: templates/email/overdue_sales_order.html:15 #: templates/js/translated/pricing.js:929 -#: templates/js/translated/sales_order.js:769 -#: templates/js/translated/sales_order.js:992 +#: templates/js/translated/sales_order.js:805 +#: templates/js/translated/sales_order.js:1028 #: templates/js/translated/stock.js:2924 msgid "Sales Order" msgstr "" #: build/templates/build/build_base.html:197 #: build/templates/build/detail.html:115 -#: report/templates/report/inventree_build_order_base.html:152 +#: report/templates/report/inventree_build_order_report.html:152 #: templates/js/translated/table_filters.js:24 msgid "Issued By" msgstr "" #: build/templates/build/build_base.html:211 -#: build/templates/build/detail.html:94 templates/js/translated/build.js:2154 +#: build/templates/build/detail.html:94 templates/js/translated/build.js:2156 msgid "Priority" msgstr "Priorita" -#: build/templates/build/build_base.html:273 +#: build/templates/build/build_base.html:269 msgid "Delete Build Order" msgstr "" -#: build/templates/build/build_base.html:283 +#: build/templates/build/build_base.html:279 msgid "Build Order QR Code" msgstr "" -#: build/templates/build/build_base.html:295 +#: build/templates/build/build_base.html:291 msgid "Link Barcode to Build Order" msgstr "" @@ -1911,8 +1762,8 @@ msgstr "" msgid "Stock can be taken from any available location." msgstr "" -#: build/templates/build/detail.html:49 order/models.py:1430 -#: templates/js/translated/purchase_order.js:2190 +#: build/templates/build/detail.html:49 order/models.py:1479 +#: templates/js/translated/purchase_order.js:2189 msgid "Destination" msgstr "" @@ -1926,10 +1777,10 @@ 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/build.js:1380 +#: templates/js/translated/model_renderers.js:241 #: templates/js/translated/purchase_order.js:1274 -#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2189 +#: templates/js/translated/stock.js:1133 templates/js/translated/stock.js:2190 #: templates/js/translated/stock.js:3127 #: templates/js/translated/table_filters.js:313 #: templates/js/translated/table_filters.js:404 @@ -1939,8 +1790,8 @@ 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 +#: order/templates/order/sales_order_base.html:190 +#: templates/js/translated/build.js:2199 msgid "Created" msgstr "Vytvořeno" @@ -1949,7 +1800,7 @@ msgid "No target date set" msgstr "Nenastaveno cílené datum" #: build/templates/build/detail.html:149 -#: order/templates/order/sales_order_base.html:202 +#: order/templates/order/sales_order_base.html:206 #: templates/js/translated/table_filters.js:689 msgid "Completed" msgstr "Dokončeno" @@ -2043,11 +1894,11 @@ msgstr "" msgid "Build Notes" msgstr "" -#: build/templates/build/detail.html:434 +#: build/templates/build/detail.html:435 msgid "Allocation Complete" msgstr "" -#: build/templates/build/detail.html:435 +#: build/templates/build/detail.html:436 msgid "All lines have been fully allocated" msgstr "" @@ -2125,1458 +1976,1485 @@ msgstr "" msgid "User or group responsible for this project" msgstr "" -#: common/models.py:765 +#: common/models.py:766 msgid "Settings key (must be unique - case insensitive)" msgstr "" -#: common/models.py:769 +#: common/models.py:770 msgid "Settings value" msgstr "" -#: common/models.py:821 +#: common/models.py:822 msgid "Chosen value is not a valid option" msgstr "" -#: common/models.py:837 +#: common/models.py:838 msgid "Value must be a boolean value" msgstr "" -#: common/models.py:845 +#: common/models.py:846 msgid "Value must be an integer value" msgstr "" -#: common/models.py:882 +#: common/models.py:883 msgid "Key string must be unique" msgstr "" -#: common/models.py:1114 +#: common/models.py:1115 msgid "No group" msgstr "" -#: common/models.py:1157 +#: common/models.py:1158 msgid "An empty domain is not allowed." msgstr "" -#: common/models.py:1159 +#: common/models.py:1160 #, python-brace-format msgid "Invalid domain name: {domain}" msgstr "" -#: common/models.py:1171 +#: common/models.py:1172 msgid "No plugin" msgstr "" -#: common/models.py:1259 +#: common/models.py:1260 msgid "Restart required" msgstr "" -#: common/models.py:1261 +#: common/models.py:1262 msgid "A setting has been changed which requires a server restart" msgstr "" -#: common/models.py:1268 +#: common/models.py:1269 msgid "Pending migrations" msgstr "" -#: common/models.py:1269 +#: common/models.py:1270 msgid "Number of pending database migrations" msgstr "" -#: common/models.py:1274 +#: common/models.py:1275 msgid "Server Instance Name" msgstr "" -#: common/models.py:1276 +#: common/models.py:1277 msgid "String descriptor for the server instance" msgstr "" -#: common/models.py:1280 +#: common/models.py:1281 msgid "Use instance name" msgstr "" -#: common/models.py:1281 +#: common/models.py:1282 msgid "Use the instance name in the title-bar" msgstr "" -#: common/models.py:1286 +#: common/models.py:1287 msgid "Restrict showing `about`" msgstr "" -#: common/models.py:1287 +#: common/models.py:1288 msgid "Show the `about` modal only to superusers" msgstr "" -#: common/models.py:1292 company/models.py:108 company/models.py:109 +#: common/models.py:1293 company/models.py:108 company/models.py:109 msgid "Company name" msgstr "Jméno společnosti" -#: common/models.py:1293 +#: common/models.py:1294 msgid "Internal company name" msgstr "" -#: common/models.py:1297 +#: common/models.py:1298 msgid "Base URL" msgstr "" -#: common/models.py:1298 +#: common/models.py:1299 msgid "Base URL for server instance" msgstr "" -#: common/models.py:1304 +#: common/models.py:1305 msgid "Default Currency" msgstr "Výchozí měna" -#: common/models.py:1305 +#: common/models.py:1306 msgid "Select base currency for pricing calculations" msgstr "" -#: common/models.py:1311 +#: common/models.py:1312 msgid "Currency Update Interval" msgstr "" -#: common/models.py:1313 +#: common/models.py:1314 msgid "How often to update exchange rates (set to zero to disable)" msgstr "" -#: common/models.py:1316 common/models.py:1372 common/models.py:1385 -#: common/models.py:1393 common/models.py:1402 common/models.py:1411 -#: common/models.py:1613 common/models.py:1635 common/models.py:1750 -#: common/models.py:2053 +#: common/models.py:1317 common/models.py:1373 common/models.py:1386 +#: common/models.py:1394 common/models.py:1403 common/models.py:1412 +#: common/models.py:1620 common/models.py:1642 common/models.py:1757 +#: common/models.py:2076 msgid "days" msgstr "" -#: common/models.py:1320 +#: common/models.py:1321 msgid "Currency Update Plugin" msgstr "" -#: common/models.py:1321 +#: common/models.py:1322 msgid "Currency update plugin to use" msgstr "" -#: common/models.py:1326 +#: common/models.py:1327 msgid "Download from URL" msgstr "Stáhnout z URL" -#: common/models.py:1328 +#: common/models.py:1329 msgid "Allow download of remote images and files from external URL" msgstr "" -#: common/models.py:1334 +#: common/models.py:1335 msgid "Download Size Limit" msgstr "" -#: common/models.py:1335 +#: common/models.py:1336 msgid "Maximum allowable download size for remote image" msgstr "" -#: common/models.py:1341 +#: common/models.py:1342 msgid "User-agent used to download from URL" msgstr "" -#: common/models.py:1343 +#: common/models.py:1344 msgid "Allow to override the user-agent used to download images and files from external URL (leave blank for the default)" msgstr "" -#: common/models.py:1348 +#: common/models.py:1349 msgid "Strict URL Validation" msgstr "" -#: common/models.py:1349 +#: common/models.py:1350 msgid "Require schema specification when validating URLs" msgstr "" -#: common/models.py:1354 +#: common/models.py:1355 msgid "Require confirm" msgstr "" -#: common/models.py:1355 +#: common/models.py:1356 msgid "Require explicit user confirmation for certain action." msgstr "" -#: common/models.py:1360 +#: common/models.py:1361 msgid "Tree Depth" msgstr "" -#: common/models.py:1362 +#: common/models.py:1363 msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed." msgstr "" -#: common/models.py:1368 +#: common/models.py:1369 msgid "Update Check Interval" msgstr "" -#: common/models.py:1369 +#: common/models.py:1370 msgid "How often to check for updates (set to zero to disable)" msgstr "" -#: common/models.py:1375 +#: common/models.py:1376 msgid "Automatic Backup" msgstr "" -#: common/models.py:1376 +#: common/models.py:1377 msgid "Enable automatic backup of database and media files" msgstr "" -#: common/models.py:1381 +#: common/models.py:1382 msgid "Auto Backup Interval" msgstr "" -#: common/models.py:1382 +#: common/models.py:1383 msgid "Specify number of days between automated backup events" msgstr "" -#: common/models.py:1388 +#: common/models.py:1389 msgid "Task Deletion Interval" msgstr "" -#: common/models.py:1390 +#: common/models.py:1391 msgid "Background task results will be deleted after specified number of days" msgstr "" -#: common/models.py:1397 +#: common/models.py:1398 msgid "Error Log Deletion Interval" msgstr "" -#: common/models.py:1399 +#: common/models.py:1400 msgid "Error logs will be deleted after specified number of days" msgstr "" -#: common/models.py:1406 +#: common/models.py:1407 msgid "Notification Deletion Interval" msgstr "" -#: common/models.py:1408 +#: common/models.py:1409 msgid "User notifications will be deleted after specified number of days" msgstr "" -#: common/models.py:1415 templates/InvenTree/settings/sidebar.html:31 +#: common/models.py:1416 templates/InvenTree/settings/sidebar.html:31 msgid "Barcode Support" msgstr "" -#: common/models.py:1416 +#: common/models.py:1417 msgid "Enable barcode scanner support in the web interface" msgstr "" -#: common/models.py:1421 +#: common/models.py:1422 msgid "Barcode Input Delay" msgstr "" -#: common/models.py:1422 +#: common/models.py:1423 msgid "Barcode input processing delay time" msgstr "" -#: common/models.py:1428 +#: common/models.py:1429 msgid "Barcode Webcam Support" msgstr "" -#: common/models.py:1429 +#: common/models.py:1430 msgid "Allow barcode scanning via webcam in browser" msgstr "" -#: common/models.py:1434 +#: common/models.py:1435 msgid "Part Revisions" msgstr "" -#: common/models.py:1435 +#: common/models.py:1436 msgid "Enable revision field for Part" msgstr "" -#: common/models.py:1440 +#: common/models.py:1441 +msgid "Allow Deletion from Assembly" +msgstr "" + +#: common/models.py:1442 +msgid "Allow deletion of parts which are used in an assembly" +msgstr "" + +#: common/models.py:1447 msgid "IPN Regex" msgstr "" -#: common/models.py:1441 +#: common/models.py:1448 msgid "Regular expression pattern for matching Part IPN" msgstr "" -#: common/models.py:1444 +#: common/models.py:1451 msgid "Allow Duplicate IPN" msgstr "" -#: common/models.py:1445 +#: common/models.py:1452 msgid "Allow multiple parts to share the same IPN" msgstr "" -#: common/models.py:1450 +#: common/models.py:1457 msgid "Allow Editing IPN" msgstr "" -#: common/models.py:1451 +#: common/models.py:1458 msgid "Allow changing the IPN value while editing a part" msgstr "" -#: common/models.py:1456 +#: common/models.py:1463 msgid "Copy Part BOM Data" msgstr "" -#: common/models.py:1457 +#: common/models.py:1464 msgid "Copy BOM data by default when duplicating a part" msgstr "" -#: common/models.py:1462 +#: common/models.py:1469 msgid "Copy Part Parameter Data" msgstr "" -#: common/models.py:1463 +#: common/models.py:1470 msgid "Copy parameter data by default when duplicating a part" msgstr "" -#: common/models.py:1468 +#: common/models.py:1475 msgid "Copy Part Test Data" msgstr "" -#: common/models.py:1469 +#: common/models.py:1476 msgid "Copy test data by default when duplicating a part" msgstr "" -#: common/models.py:1474 +#: common/models.py:1481 msgid "Copy Category Parameter Templates" msgstr "" -#: common/models.py:1475 +#: common/models.py:1482 msgid "Copy category parameter templates when creating a part" msgstr "" -#: common/models.py:1480 part/admin.py:108 part/models.py:3772 -#: report/models.py:182 stock/serializers.py:99 +#: common/models.py:1487 part/admin.py:108 part/models.py:3815 +#: report/models.py:293 report/models.py:360 report/serializers.py:90 +#: report/serializers.py:131 stock/serializers.py:228 #: templates/js/translated/table_filters.js:139 #: templates/js/translated/table_filters.js:767 msgid "Template" msgstr "" -#: common/models.py:1481 +#: common/models.py:1488 msgid "Parts are templates by default" msgstr "" -#: common/models.py:1486 part/admin.py:91 part/admin.py:431 part/models.py:1016 +#: common/models.py:1493 part/admin.py:91 part/admin.py:433 part/models.py:1059 #: 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:1487 +#: common/models.py:1494 msgid "Parts can be assembled from other components by default" msgstr "" -#: common/models.py:1492 part/admin.py:95 part/models.py:1022 +#: common/models.py:1499 part/admin.py:95 part/models.py:1065 #: templates/js/translated/table_filters.js:729 msgid "Component" msgstr "" -#: common/models.py:1493 +#: common/models.py:1500 msgid "Parts can be used as sub-components by default" msgstr "" -#: common/models.py:1498 part/admin.py:100 part/models.py:1034 +#: common/models.py:1505 part/admin.py:100 part/models.py:1077 msgid "Purchaseable" msgstr "Možné zakoupit" -#: common/models.py:1499 +#: common/models.py:1506 msgid "Parts are purchaseable by default" msgstr "Díly jsou zakoupitelné ve výchozím nastavení" -#: common/models.py:1504 part/admin.py:104 part/models.py:1040 +#: common/models.py:1511 part/admin.py:104 part/models.py:1083 #: templates/js/translated/table_filters.js:755 msgid "Salable" msgstr "Prodejné" -#: common/models.py:1505 +#: common/models.py:1512 msgid "Parts are salable by default" msgstr "Díly jsou prodejné ve výchozím nastavení" -#: common/models.py:1510 part/admin.py:113 part/models.py:1028 +#: common/models.py:1517 part/admin.py:113 part/models.py:1071 #: 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:1511 +#: common/models.py:1518 msgid "Parts are trackable by default" msgstr "Díly jsou sledovatelné ve výchozím nastavení" -#: common/models.py:1516 part/admin.py:117 part/models.py:1050 +#: common/models.py:1523 part/admin.py:117 part/models.py:1093 #: 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:1517 +#: common/models.py:1524 msgid "Parts are virtual by default" msgstr "Díly jsou nehmotné (virtuální) ve výchozím nastavení" -#: common/models.py:1522 +#: common/models.py:1529 msgid "Show Import in Views" msgstr "Zobrazit Import v zobrazeních" -#: common/models.py:1523 +#: common/models.py:1530 msgid "Display the import wizard in some part views" msgstr "" -#: common/models.py:1528 +#: common/models.py:1535 msgid "Show related parts" msgstr "Zobrazit související díly" -#: common/models.py:1529 +#: common/models.py:1536 msgid "Display related parts for a part" msgstr "Zobrazit související díly pro díl" -#: common/models.py:1534 +#: common/models.py:1541 msgid "Initial Stock Data" msgstr "Počáteční údaje zásob" -#: common/models.py:1535 +#: common/models.py:1542 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:1540 templates/js/translated/part.js:107 +#: common/models.py:1547 templates/js/translated/part.js:107 msgid "Initial Supplier Data" msgstr "Počáteční údaje dodavatele" -#: common/models.py:1542 +#: common/models.py:1549 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:1548 +#: common/models.py:1555 msgid "Part Name Display Format" msgstr "Formát zobrazení jména dílu" -#: common/models.py:1549 +#: common/models.py:1556 msgid "Format to display the part name" msgstr "Formát pro zobrazení názvu dílu" -#: common/models.py:1555 +#: common/models.py:1562 msgid "Part Category Default Icon" msgstr "Výchozí ikona kategorie dílu" -#: common/models.py:1556 +#: common/models.py:1563 msgid "Part category default icon (empty means no icon)" msgstr "Výchozí ikona kategorie dílu (prázdné znamená bez ikony)" -#: common/models.py:1560 +#: common/models.py:1567 msgid "Enforce Parameter Units" msgstr "" -#: common/models.py:1562 +#: common/models.py:1569 msgid "If units are provided, parameter values must match the specified units" msgstr "" -#: common/models.py:1568 +#: common/models.py:1575 msgid "Minimum Pricing Decimal Places" msgstr "Minimální počet desetinných míst u cen" -#: common/models.py:1570 +#: common/models.py:1577 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:1576 +#: common/models.py:1583 msgid "Maximum Pricing Decimal Places" msgstr "Maximální počet desetinných míst u cen" -#: common/models.py:1578 +#: common/models.py:1585 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:1584 +#: common/models.py:1591 msgid "Use Supplier Pricing" msgstr "Použít ceny dodavatele" -#: common/models.py:1586 +#: common/models.py:1593 msgid "Include supplier price breaks in overall pricing calculations" msgstr "" -#: common/models.py:1592 +#: common/models.py:1599 msgid "Purchase History Override" msgstr "Přepsání historie nákupu" -#: common/models.py:1594 +#: common/models.py:1601 msgid "Historical purchase order pricing overrides supplier price breaks" msgstr "" -#: common/models.py:1600 +#: common/models.py:1607 msgid "Use Stock Item Pricing" msgstr "" -#: common/models.py:1602 +#: common/models.py:1609 msgid "Use pricing from manually entered stock data for pricing calculations" msgstr "" -#: common/models.py:1608 +#: common/models.py:1615 msgid "Stock Item Pricing Age" msgstr "" -#: common/models.py:1610 +#: common/models.py:1617 msgid "Exclude stock items older than this number of days from pricing calculations" msgstr "" -#: common/models.py:1617 +#: common/models.py:1624 msgid "Use Variant Pricing" msgstr "" -#: common/models.py:1618 +#: common/models.py:1625 msgid "Include variant pricing in overall pricing calculations" msgstr "" -#: common/models.py:1623 +#: common/models.py:1630 msgid "Active Variants Only" msgstr "" -#: common/models.py:1625 +#: common/models.py:1632 msgid "Only use active variant parts for calculating variant pricing" msgstr "" -#: common/models.py:1631 +#: common/models.py:1638 msgid "Pricing Rebuild Interval" msgstr "" -#: common/models.py:1633 +#: common/models.py:1640 msgid "Number of days before part pricing is automatically updated" msgstr "" -#: common/models.py:1640 +#: common/models.py:1647 msgid "Internal Prices" msgstr "" -#: common/models.py:1641 +#: common/models.py:1648 msgid "Enable internal prices for parts" msgstr "" -#: common/models.py:1646 +#: common/models.py:1653 msgid "Internal Price Override" msgstr "" -#: common/models.py:1648 +#: common/models.py:1655 msgid "If available, internal prices override price range calculations" msgstr "" -#: common/models.py:1654 +#: common/models.py:1661 msgid "Enable label printing" msgstr "" -#: common/models.py:1655 +#: common/models.py:1662 msgid "Enable label printing from the web interface" msgstr "" -#: common/models.py:1660 +#: common/models.py:1667 msgid "Label Image DPI" msgstr "" -#: common/models.py:1662 +#: common/models.py:1669 msgid "DPI resolution when generating image files to supply to label printing plugins" msgstr "" -#: common/models.py:1668 +#: common/models.py:1675 msgid "Enable Reports" msgstr "" -#: common/models.py:1669 +#: common/models.py:1676 msgid "Enable generation of reports" msgstr "" -#: common/models.py:1674 templates/stats.html:25 +#: common/models.py:1681 templates/stats.html:25 msgid "Debug Mode" msgstr "" -#: common/models.py:1675 +#: common/models.py:1682 msgid "Generate reports in debug mode (HTML output)" msgstr "" -#: common/models.py:1680 +#: common/models.py:1687 msgid "Log Report Errors" msgstr "" -#: common/models.py:1681 +#: common/models.py:1688 msgid "Log errors which occur when generating reports" msgstr "" -#: common/models.py:1686 plugin/builtin/labels/label_sheet.py:28 -#: report/models.py:203 +#: common/models.py:1693 plugin/builtin/labels/label_sheet.py:28 +#: report/models.py:301 msgid "Page Size" msgstr "Velikost stránky" -#: common/models.py:1687 +#: common/models.py:1694 msgid "Default page size for PDF reports" msgstr "Výchozí velikost stránky pro PDF reporty" -#: common/models.py:1692 +#: common/models.py:1699 msgid "Enable Test Reports" msgstr "Povolit testovací reporty" -#: common/models.py:1693 +#: common/models.py:1700 msgid "Enable generation of test reports" msgstr "Povolit generování zkušebních reportů" -#: common/models.py:1698 +#: common/models.py:1705 msgid "Attach Test Reports" msgstr "Připojit testovací reporty" -#: common/models.py:1700 +#: common/models.py:1707 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:1706 +#: common/models.py:1713 msgid "Globally Unique Serials" msgstr "" -#: common/models.py:1707 +#: common/models.py:1714 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:1712 +#: common/models.py:1719 msgid "Autofill Serial Numbers" msgstr "Automaticky vyplnit sériová čísla" -#: common/models.py:1713 +#: common/models.py:1720 msgid "Autofill serial numbers in forms" msgstr "Automaticky vyplnit sériová čísla ve formulářích" -#: common/models.py:1718 +#: common/models.py:1725 msgid "Delete Depleted Stock" msgstr "Odstranit vyčerpané zásoby" -#: common/models.py:1720 +#: common/models.py:1727 msgid "Determines default behavior when a stock item is depleted" msgstr "" -#: common/models.py:1726 +#: common/models.py:1733 msgid "Batch Code Template" msgstr "" -#: common/models.py:1728 +#: common/models.py:1735 msgid "Template for generating default batch codes for stock items" msgstr "" -#: common/models.py:1733 +#: common/models.py:1740 msgid "Stock Expiry" msgstr "" -#: common/models.py:1734 +#: common/models.py:1741 msgid "Enable stock expiry functionality" msgstr "" -#: common/models.py:1739 +#: common/models.py:1746 msgid "Sell Expired Stock" msgstr "" -#: common/models.py:1740 +#: common/models.py:1747 msgid "Allow sale of expired stock" msgstr "" -#: common/models.py:1745 +#: common/models.py:1752 msgid "Stock Stale Time" msgstr "" -#: common/models.py:1747 +#: common/models.py:1754 msgid "Number of days stock items are considered stale before expiring" msgstr "" -#: common/models.py:1754 +#: common/models.py:1761 msgid "Build Expired Stock" msgstr "" -#: common/models.py:1755 +#: common/models.py:1762 msgid "Allow building with expired stock" msgstr "" -#: common/models.py:1760 +#: common/models.py:1767 msgid "Stock Ownership Control" msgstr "" -#: common/models.py:1761 +#: common/models.py:1768 msgid "Enable ownership control over stock locations and items" msgstr "" -#: common/models.py:1766 +#: common/models.py:1773 msgid "Stock Location Default Icon" msgstr "" -#: common/models.py:1767 +#: common/models.py:1774 msgid "Stock location default icon (empty means no icon)" msgstr "" -#: common/models.py:1771 +#: common/models.py:1778 msgid "Show Installed Stock Items" msgstr "" -#: common/models.py:1772 +#: common/models.py:1779 msgid "Display installed stock items in stock tables" msgstr "" -#: common/models.py:1777 +#: common/models.py:1784 msgid "Check BOM when installing items" msgstr "" -#: common/models.py:1779 +#: common/models.py:1786 msgid "Installed stock items must exist in the BOM for the parent part" msgstr "" -#: common/models.py:1785 +#: common/models.py:1792 +msgid "Allow Out of Stock Transfer" +msgstr "" + +#: common/models.py:1794 +msgid "Allow stock items which are not in stock to be transferred between stock locations" +msgstr "" + +#: common/models.py:1800 msgid "Build Order Reference Pattern" msgstr "" -#: common/models.py:1787 +#: common/models.py:1802 msgid "Required pattern for generating Build Order reference field" msgstr "" -#: common/models.py:1793 common/models.py:1821 common/models.py:1843 -#: common/models.py:1871 +#: common/models.py:1808 common/models.py:1836 common/models.py:1858 +#: common/models.py:1894 msgid "Require Responsible Owner" msgstr "" -#: common/models.py:1794 common/models.py:1822 common/models.py:1844 -#: common/models.py:1872 +#: common/models.py:1809 common/models.py:1837 common/models.py:1859 +#: common/models.py:1895 msgid "A responsible owner must be assigned to each order" msgstr "" -#: common/models.py:1799 +#: common/models.py:1814 msgid "Block Until Tests Pass" msgstr "" -#: common/models.py:1801 +#: common/models.py:1816 msgid "Prevent build outputs from being completed until all required tests pass" msgstr "" -#: common/models.py:1807 +#: common/models.py:1822 msgid "Enable Return Orders" msgstr "" -#: common/models.py:1808 +#: common/models.py:1823 msgid "Enable return order functionality in the user interface" msgstr "" -#: common/models.py:1813 +#: common/models.py:1828 msgid "Return Order Reference Pattern" msgstr "" -#: common/models.py:1815 +#: common/models.py:1830 msgid "Required pattern for generating Return Order reference field" msgstr "" -#: common/models.py:1827 +#: common/models.py:1842 msgid "Edit Completed Return Orders" msgstr "" -#: common/models.py:1829 +#: common/models.py:1844 msgid "Allow editing of return orders after they have been completed" msgstr "" -#: common/models.py:1835 +#: common/models.py:1850 msgid "Sales Order Reference Pattern" msgstr "" -#: common/models.py:1837 +#: common/models.py:1852 msgid "Required pattern for generating Sales Order reference field" msgstr "" -#: common/models.py:1849 +#: common/models.py:1864 msgid "Sales Order Default Shipment" msgstr "" -#: common/models.py:1850 +#: common/models.py:1865 msgid "Enable creation of default shipment with sales orders" msgstr "" -#: common/models.py:1855 +#: common/models.py:1870 msgid "Edit Completed Sales Orders" msgstr "" -#: common/models.py:1857 +#: common/models.py:1872 msgid "Allow editing of sales orders after they have been shipped or completed" msgstr "" -#: common/models.py:1863 +#: common/models.py:1878 +#, fuzzy +#| msgid "A build order has been completed" +msgid "Mark Shipped Orders as Complete" +msgstr "Příkaz k sestavení byl dokončen" + +#: common/models.py:1880 +msgid "Sales orders marked as shipped will automatically be completed, bypassing the \"shipped\" status" +msgstr "" + +#: common/models.py:1886 msgid "Purchase Order Reference Pattern" msgstr "" -#: common/models.py:1865 +#: common/models.py:1888 msgid "Required pattern for generating Purchase Order reference field" msgstr "" -#: common/models.py:1877 +#: common/models.py:1900 msgid "Edit Completed Purchase Orders" msgstr "" -#: common/models.py:1879 +#: common/models.py:1902 msgid "Allow editing of purchase orders after they have been shipped or completed" msgstr "" -#: common/models.py:1885 +#: common/models.py:1908 msgid "Auto Complete Purchase Orders" msgstr "" -#: common/models.py:1887 +#: common/models.py:1910 msgid "Automatically mark purchase orders as complete when all line items are received" msgstr "" -#: common/models.py:1894 +#: common/models.py:1917 msgid "Enable password forgot" msgstr "" -#: common/models.py:1895 +#: common/models.py:1918 msgid "Enable password forgot function on the login pages" msgstr "" -#: common/models.py:1900 +#: common/models.py:1923 msgid "Enable registration" msgstr "" -#: common/models.py:1901 +#: common/models.py:1924 msgid "Enable self-registration for users on the login pages" msgstr "" -#: common/models.py:1906 +#: common/models.py:1929 msgid "Enable SSO" msgstr "" -#: common/models.py:1907 +#: common/models.py:1930 msgid "Enable SSO on the login pages" msgstr "" -#: common/models.py:1912 +#: common/models.py:1935 msgid "Enable SSO registration" msgstr "" -#: common/models.py:1914 +#: common/models.py:1937 msgid "Enable self-registration via SSO for users on the login pages" msgstr "" -#: common/models.py:1920 +#: common/models.py:1943 msgid "Email required" msgstr "" -#: common/models.py:1921 +#: common/models.py:1944 msgid "Require user to supply mail on signup" msgstr "" -#: common/models.py:1926 +#: common/models.py:1949 msgid "Auto-fill SSO users" msgstr "" -#: common/models.py:1928 +#: common/models.py:1951 msgid "Automatically fill out user-details from SSO account-data" msgstr "" -#: common/models.py:1934 +#: common/models.py:1957 msgid "Mail twice" msgstr "" -#: common/models.py:1935 +#: common/models.py:1958 msgid "On signup ask users twice for their mail" msgstr "" -#: common/models.py:1940 +#: common/models.py:1963 msgid "Password twice" msgstr "" -#: common/models.py:1941 +#: common/models.py:1964 msgid "On signup ask users twice for their password" msgstr "" -#: common/models.py:1946 +#: common/models.py:1969 msgid "Allowed domains" msgstr "" -#: common/models.py:1948 +#: common/models.py:1971 msgid "Restrict signup to certain domains (comma-separated, starting with @)" msgstr "" -#: common/models.py:1954 +#: common/models.py:1977 msgid "Group on signup" msgstr "" -#: common/models.py:1955 +#: common/models.py:1978 msgid "Group to which new users are assigned on registration" msgstr "" -#: common/models.py:1960 +#: common/models.py:1983 msgid "Enforce MFA" msgstr "" -#: common/models.py:1961 +#: common/models.py:1984 msgid "Users must use multifactor security." msgstr "" -#: common/models.py:1966 +#: common/models.py:1989 msgid "Check plugins on startup" msgstr "" -#: common/models.py:1968 +#: common/models.py:1991 msgid "Check that all plugins are installed on startup - enable in container environments" msgstr "" -#: common/models.py:1976 +#: common/models.py:1999 msgid "Check for plugin updates" msgstr "" -#: common/models.py:1977 +#: common/models.py:2000 msgid "Enable periodic checks for updates to installed plugins" msgstr "" -#: common/models.py:1983 +#: common/models.py:2006 msgid "Enable URL integration" msgstr "" -#: common/models.py:1984 +#: common/models.py:2007 msgid "Enable plugins to add URL routes" msgstr "" -#: common/models.py:1990 +#: common/models.py:2013 msgid "Enable navigation integration" msgstr "" -#: common/models.py:1991 +#: common/models.py:2014 msgid "Enable plugins to integrate into navigation" msgstr "" -#: common/models.py:1997 +#: common/models.py:2020 msgid "Enable app integration" msgstr "" -#: common/models.py:1998 +#: common/models.py:2021 msgid "Enable plugins to add apps" msgstr "" -#: common/models.py:2004 +#: common/models.py:2027 msgid "Enable schedule integration" msgstr "" -#: common/models.py:2005 +#: common/models.py:2028 msgid "Enable plugins to run scheduled tasks" msgstr "" -#: common/models.py:2011 +#: common/models.py:2034 msgid "Enable event integration" msgstr "" -#: common/models.py:2012 +#: common/models.py:2035 msgid "Enable plugins to respond to internal events" msgstr "" -#: common/models.py:2018 +#: common/models.py:2041 msgid "Enable project codes" msgstr "" -#: common/models.py:2019 +#: common/models.py:2042 msgid "Enable project codes for tracking projects" msgstr "" -#: common/models.py:2024 +#: common/models.py:2047 msgid "Stocktake Functionality" msgstr "" -#: common/models.py:2026 +#: common/models.py:2049 msgid "Enable stocktake functionality for recording stock levels and calculating stock value" msgstr "" -#: common/models.py:2032 +#: common/models.py:2055 msgid "Exclude External Locations" msgstr "" -#: common/models.py:2034 +#: common/models.py:2057 msgid "Exclude stock items in external locations from stocktake calculations" msgstr "" -#: common/models.py:2040 +#: common/models.py:2063 msgid "Automatic Stocktake Period" msgstr "" -#: common/models.py:2042 +#: common/models.py:2065 msgid "Number of days between automatic stocktake recording (set to zero to disable)" msgstr "" -#: common/models.py:2048 +#: common/models.py:2071 msgid "Report Deletion Interval" msgstr "" -#: common/models.py:2050 +#: common/models.py:2073 msgid "Stocktake reports will be deleted after specified number of days" msgstr "" -#: common/models.py:2057 +#: common/models.py:2080 msgid "Display Users full names" msgstr "" -#: common/models.py:2058 +#: common/models.py:2081 msgid "Display Users full names instead of usernames" msgstr "" -#: common/models.py:2063 +#: common/models.py:2086 msgid "Enable Test Station Data" msgstr "" -#: common/models.py:2064 +#: common/models.py:2087 msgid "Enable test station data collection for test results" msgstr "" -#: common/models.py:2076 common/models.py:2486 +#: common/models.py:2099 common/models.py:2509 msgid "Settings key (must be unique - case insensitive" msgstr "" -#: common/models.py:2119 +#: common/models.py:2142 msgid "Hide inactive parts" msgstr "" -#: common/models.py:2121 +#: common/models.py:2144 msgid "Hide inactive parts in results displayed on the homepage" msgstr "" -#: common/models.py:2127 +#: common/models.py:2150 msgid "Show subscribed parts" msgstr "" -#: common/models.py:2128 +#: common/models.py:2151 msgid "Show subscribed parts on the homepage" msgstr "" -#: common/models.py:2133 +#: common/models.py:2156 msgid "Show subscribed categories" msgstr "" -#: common/models.py:2134 +#: common/models.py:2157 msgid "Show subscribed part categories on the homepage" msgstr "" -#: common/models.py:2139 +#: common/models.py:2162 msgid "Show latest parts" msgstr "" -#: common/models.py:2140 +#: common/models.py:2163 msgid "Show latest parts on the homepage" msgstr "" -#: common/models.py:2145 +#: common/models.py:2168 msgid "Show invalid BOMs" msgstr "" -#: common/models.py:2146 +#: common/models.py:2169 msgid "Show BOMs that await validation on the homepage" msgstr "" -#: common/models.py:2151 +#: common/models.py:2174 msgid "Show recent stock changes" msgstr "" -#: common/models.py:2152 +#: common/models.py:2175 msgid "Show recently changed stock items on the homepage" msgstr "" -#: common/models.py:2157 +#: common/models.py:2180 msgid "Show low stock" msgstr "" -#: common/models.py:2158 +#: common/models.py:2181 msgid "Show low stock items on the homepage" msgstr "" -#: common/models.py:2163 +#: common/models.py:2186 msgid "Show depleted stock" msgstr "" -#: common/models.py:2164 +#: common/models.py:2187 msgid "Show depleted stock items on the homepage" msgstr "" -#: common/models.py:2169 +#: common/models.py:2192 msgid "Show needed stock" msgstr "" -#: common/models.py:2170 +#: common/models.py:2193 msgid "Show stock items needed for builds on the homepage" msgstr "" -#: common/models.py:2175 +#: common/models.py:2198 msgid "Show expired stock" msgstr "" -#: common/models.py:2176 +#: common/models.py:2199 msgid "Show expired stock items on the homepage" msgstr "" -#: common/models.py:2181 +#: common/models.py:2204 msgid "Show stale stock" msgstr "" -#: common/models.py:2182 +#: common/models.py:2205 msgid "Show stale stock items on the homepage" msgstr "" -#: common/models.py:2187 +#: common/models.py:2210 msgid "Show pending builds" msgstr "" -#: common/models.py:2188 +#: common/models.py:2211 msgid "Show pending builds on the homepage" msgstr "" -#: common/models.py:2193 +#: common/models.py:2216 msgid "Show overdue builds" msgstr "" -#: common/models.py:2194 +#: common/models.py:2217 msgid "Show overdue builds on the homepage" msgstr "" -#: common/models.py:2199 +#: common/models.py:2222 msgid "Show outstanding POs" msgstr "" -#: common/models.py:2200 +#: common/models.py:2223 msgid "Show outstanding POs on the homepage" msgstr "" -#: common/models.py:2205 +#: common/models.py:2228 msgid "Show overdue POs" msgstr "" -#: common/models.py:2206 +#: common/models.py:2229 msgid "Show overdue POs on the homepage" msgstr "" -#: common/models.py:2211 +#: common/models.py:2234 msgid "Show outstanding SOs" msgstr "" -#: common/models.py:2212 +#: common/models.py:2235 msgid "Show outstanding SOs on the homepage" msgstr "" -#: common/models.py:2217 +#: common/models.py:2240 msgid "Show overdue SOs" msgstr "" -#: common/models.py:2218 +#: common/models.py:2241 msgid "Show overdue SOs on the homepage" msgstr "" -#: common/models.py:2223 +#: common/models.py:2246 msgid "Show pending SO shipments" msgstr "" -#: common/models.py:2224 +#: common/models.py:2247 msgid "Show pending SO shipments on the homepage" msgstr "" -#: common/models.py:2229 +#: common/models.py:2252 msgid "Show News" msgstr "" -#: common/models.py:2230 +#: common/models.py:2253 msgid "Show news on the homepage" msgstr "" -#: common/models.py:2235 +#: common/models.py:2258 msgid "Inline label display" msgstr "" -#: common/models.py:2237 +#: common/models.py:2260 msgid "Display PDF labels in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2243 +#: common/models.py:2266 msgid "Default label printer" msgstr "" -#: common/models.py:2245 +#: common/models.py:2268 msgid "Configure which label printer should be selected by default" msgstr "" -#: common/models.py:2251 +#: common/models.py:2274 msgid "Inline report display" msgstr "" -#: common/models.py:2253 +#: common/models.py:2276 msgid "Display PDF reports in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2259 +#: common/models.py:2282 msgid "Search Parts" msgstr "" -#: common/models.py:2260 +#: common/models.py:2283 msgid "Display parts in search preview window" msgstr "" -#: common/models.py:2265 +#: common/models.py:2288 msgid "Search Supplier Parts" msgstr "" -#: common/models.py:2266 +#: common/models.py:2289 msgid "Display supplier parts in search preview window" msgstr "" -#: common/models.py:2271 +#: common/models.py:2294 msgid "Search Manufacturer Parts" msgstr "" -#: common/models.py:2272 +#: common/models.py:2295 msgid "Display manufacturer parts in search preview window" msgstr "" -#: common/models.py:2277 +#: common/models.py:2300 msgid "Hide Inactive Parts" msgstr "" -#: common/models.py:2278 +#: common/models.py:2301 msgid "Excluded inactive parts from search preview window" msgstr "" -#: common/models.py:2283 +#: common/models.py:2306 msgid "Search Categories" msgstr "" -#: common/models.py:2284 +#: common/models.py:2307 msgid "Display part categories in search preview window" msgstr "" -#: common/models.py:2289 +#: common/models.py:2312 msgid "Search Stock" msgstr "" -#: common/models.py:2290 +#: common/models.py:2313 msgid "Display stock items in search preview window" msgstr "" -#: common/models.py:2295 +#: common/models.py:2318 msgid "Hide Unavailable Stock Items" msgstr "" -#: common/models.py:2297 +#: common/models.py:2320 msgid "Exclude stock items which are not available from the search preview window" msgstr "" -#: common/models.py:2303 +#: common/models.py:2326 msgid "Search Locations" msgstr "" -#: common/models.py:2304 +#: common/models.py:2327 msgid "Display stock locations in search preview window" msgstr "" -#: common/models.py:2309 +#: common/models.py:2332 msgid "Search Companies" msgstr "" -#: common/models.py:2310 +#: common/models.py:2333 msgid "Display companies in search preview window" msgstr "" -#: common/models.py:2315 +#: common/models.py:2338 msgid "Search Build Orders" msgstr "" -#: common/models.py:2316 +#: common/models.py:2339 msgid "Display build orders in search preview window" msgstr "" -#: common/models.py:2321 +#: common/models.py:2344 msgid "Search Purchase Orders" msgstr "" -#: common/models.py:2322 +#: common/models.py:2345 msgid "Display purchase orders in search preview window" msgstr "" -#: common/models.py:2327 +#: common/models.py:2350 msgid "Exclude Inactive Purchase Orders" msgstr "" -#: common/models.py:2329 +#: common/models.py:2352 msgid "Exclude inactive purchase orders from search preview window" msgstr "" -#: common/models.py:2335 +#: common/models.py:2358 msgid "Search Sales Orders" msgstr "" -#: common/models.py:2336 +#: common/models.py:2359 msgid "Display sales orders in search preview window" msgstr "" -#: common/models.py:2341 +#: common/models.py:2364 msgid "Exclude Inactive Sales Orders" msgstr "" -#: common/models.py:2343 +#: common/models.py:2366 msgid "Exclude inactive sales orders from search preview window" msgstr "" -#: common/models.py:2349 +#: common/models.py:2372 msgid "Search Return Orders" msgstr "" -#: common/models.py:2350 +#: common/models.py:2373 msgid "Display return orders in search preview window" msgstr "" -#: common/models.py:2355 +#: common/models.py:2378 msgid "Exclude Inactive Return Orders" msgstr "" -#: common/models.py:2357 +#: common/models.py:2380 msgid "Exclude inactive return orders from search preview window" msgstr "" -#: common/models.py:2363 +#: common/models.py:2386 msgid "Search Preview Results" msgstr "" -#: common/models.py:2365 +#: common/models.py:2388 msgid "Number of results to show in each section of the search preview window" msgstr "" -#: common/models.py:2371 +#: common/models.py:2394 msgid "Regex Search" msgstr "" -#: common/models.py:2372 +#: common/models.py:2395 msgid "Enable regular expressions in search queries" msgstr "" -#: common/models.py:2377 +#: common/models.py:2400 msgid "Whole Word Search" msgstr "" -#: common/models.py:2378 +#: common/models.py:2401 msgid "Search queries return results for whole word matches" msgstr "" -#: common/models.py:2383 +#: common/models.py:2406 msgid "Show Quantity in Forms" msgstr "" -#: common/models.py:2384 +#: common/models.py:2407 msgid "Display available part quantity in some forms" msgstr "" -#: common/models.py:2389 +#: common/models.py:2412 msgid "Escape Key Closes Forms" msgstr "" -#: common/models.py:2390 +#: common/models.py:2413 msgid "Use the escape key to close modal forms" msgstr "" -#: common/models.py:2395 +#: common/models.py:2418 msgid "Fixed Navbar" msgstr "" -#: common/models.py:2396 +#: common/models.py:2419 msgid "The navbar position is fixed to the top of the screen" msgstr "" -#: common/models.py:2401 +#: common/models.py:2424 msgid "Date Format" msgstr "Formát data" -#: common/models.py:2402 +#: common/models.py:2425 msgid "Preferred format for displaying dates" msgstr "" -#: common/models.py:2415 part/templates/part/detail.html:41 +#: common/models.py:2438 part/templates/part/detail.html:41 msgid "Part Scheduling" msgstr "" -#: common/models.py:2416 +#: common/models.py:2439 msgid "Display part scheduling information" msgstr "" -#: common/models.py:2421 part/templates/part/detail.html:62 +#: common/models.py:2444 part/templates/part/detail.html:62 msgid "Part Stocktake" msgstr "" -#: common/models.py:2423 +#: common/models.py:2446 msgid "Display part stocktake information (if stocktake functionality is enabled)" msgstr "" -#: common/models.py:2429 +#: common/models.py:2452 msgid "Table String Length" msgstr "" -#: common/models.py:2431 +#: common/models.py:2454 msgid "Maximum length limit for strings displayed in table views" msgstr "" -#: common/models.py:2437 +#: common/models.py:2460 msgid "Default part label template" msgstr "" -#: common/models.py:2438 +#: common/models.py:2461 msgid "The part label template to be automatically selected" msgstr "" -#: common/models.py:2443 +#: common/models.py:2466 msgid "Default stock item template" msgstr "" -#: common/models.py:2445 +#: common/models.py:2468 msgid "The stock item label template to be automatically selected" msgstr "" -#: common/models.py:2451 +#: common/models.py:2474 msgid "Default stock location label template" msgstr "" -#: common/models.py:2453 +#: common/models.py:2476 msgid "The stock location label template to be automatically selected" msgstr "" -#: common/models.py:2459 +#: common/models.py:2482 msgid "Default build line label template" msgstr "" -#: common/models.py:2461 +#: common/models.py:2484 msgid "The build line label template to be automatically selected" msgstr "" -#: common/models.py:2467 +#: common/models.py:2490 msgid "Receive error reports" msgstr "" -#: common/models.py:2468 +#: common/models.py:2491 msgid "Receive notifications for system errors" msgstr "" -#: common/models.py:2473 +#: common/models.py:2496 msgid "Last used printing machines" msgstr "" -#: common/models.py:2474 +#: common/models.py:2497 msgid "Save the last used printing machines for a user" msgstr "" -#: common/models.py:2517 +#: common/models.py:2540 msgid "Price break quantity" msgstr "" -#: common/models.py:2524 company/serializers.py:496 order/admin.py:42 -#: order/models.py:1333 order/models.py:2241 +#: common/models.py:2547 company/serializers.py:496 order/admin.py:42 +#: order/models.py:1382 order/models.py:2301 #: templates/js/translated/company.js:1823 templates/js/translated/part.js:1885 #: templates/js/translated/pricing.js:621 -#: templates/js/translated/return_order.js:741 +#: templates/js/translated/return_order.js:740 msgid "Price" msgstr "Cena" -#: common/models.py:2525 +#: common/models.py:2548 msgid "Unit price at specified quantity" msgstr "" -#: common/models.py:2696 common/models.py:2881 +#: common/models.py:2719 common/models.py:2904 msgid "Endpoint" msgstr "" -#: common/models.py:2697 +#: common/models.py:2720 msgid "Endpoint at which this webhook is received" msgstr "" -#: common/models.py:2707 +#: common/models.py:2730 msgid "Name for this webhook" msgstr "" -#: common/models.py:2711 company/models.py:160 company/models.py:813 -#: machine/models.py:39 part/admin.py:88 part/models.py:1045 -#: plugin/models.py:56 templates/js/translated/company.js:523 +#: common/models.py:2734 company/models.py:160 company/models.py:814 +#: machine/models.py:39 part/admin.py:88 part/models.py:1088 +#: plugin/models.py:65 templates/js/translated/company.js:523 #: templates/js/translated/table_filters.js:135 #: templates/js/translated/table_filters.js:219 #: templates/js/translated/table_filters.js:492 @@ -3586,135 +3464,135 @@ msgstr "" msgid "Active" msgstr "" -#: common/models.py:2711 +#: common/models.py:2734 msgid "Is this webhook active" msgstr "" -#: common/models.py:2727 users/models.py:159 +#: common/models.py:2750 users/models.py:159 msgid "Token" msgstr "" -#: common/models.py:2728 +#: common/models.py:2751 msgid "Token for access" msgstr "" -#: common/models.py:2736 +#: common/models.py:2759 msgid "Secret" msgstr "" -#: common/models.py:2737 +#: common/models.py:2760 msgid "Shared secret for HMAC" msgstr "" -#: common/models.py:2845 +#: common/models.py:2868 msgid "Message ID" msgstr "" -#: common/models.py:2846 +#: common/models.py:2869 msgid "Unique identifier for this message" msgstr "" -#: common/models.py:2854 +#: common/models.py:2877 msgid "Host" msgstr "" -#: common/models.py:2855 +#: common/models.py:2878 msgid "Host from which this message was received" msgstr "" -#: common/models.py:2863 +#: common/models.py:2886 msgid "Header" msgstr "" -#: common/models.py:2864 +#: common/models.py:2887 msgid "Header of this message" msgstr "" -#: common/models.py:2871 +#: common/models.py:2894 msgid "Body" msgstr "" -#: common/models.py:2872 +#: common/models.py:2895 msgid "Body of this message" msgstr "" -#: common/models.py:2882 +#: common/models.py:2905 msgid "Endpoint on which this message was received" msgstr "" -#: common/models.py:2887 +#: common/models.py:2910 msgid "Worked on" msgstr "" -#: common/models.py:2888 +#: common/models.py:2911 msgid "Was the work on this message finished?" msgstr "" -#: common/models.py:3014 +#: common/models.py:3037 msgid "Id" msgstr "" -#: common/models.py:3016 templates/js/translated/company.js:965 +#: common/models.py:3039 templates/js/translated/company.js:965 #: templates/js/translated/news.js:44 msgid "Title" msgstr "" -#: common/models.py:3020 templates/js/translated/news.js:60 +#: common/models.py:3043 templates/js/translated/news.js:60 msgid "Published" msgstr "" -#: common/models.py:3022 templates/InvenTree/settings/plugin_settings.html:32 +#: common/models.py:3045 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:3024 templates/js/translated/news.js:52 +#: common/models.py:3047 templates/js/translated/news.js:52 msgid "Summary" msgstr "" -#: common/models.py:3027 +#: common/models.py:3050 msgid "Read" msgstr "" -#: common/models.py:3027 +#: common/models.py:3050 msgid "Was this news item read?" msgstr "" -#: common/models.py:3044 company/models.py:156 part/models.py:929 +#: common/models.py:3067 company/models.py:156 part/models.py:972 #: 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 +#: report/templates/report/inventree_return_order_report.html:35 #: stock/templates/stock/item_base.html:133 templates/503.html:31 #: templates/hover_image.html:7 templates/hover_image.html:9 #: templates/modals.html:6 msgid "Image" msgstr "Obrazek" -#: common/models.py:3044 +#: common/models.py:3067 msgid "Image file" msgstr "" -#: common/models.py:3086 +#: common/models.py:3109 msgid "Unit name must be a valid identifier" msgstr "" -#: common/models.py:3105 +#: common/models.py:3128 msgid "Unit name" msgstr "" -#: common/models.py:3112 templates/InvenTree/settings/settings_staff_js.html:75 +#: common/models.py:3135 templates/InvenTree/settings/settings_staff_js.html:75 msgid "Symbol" msgstr "" -#: common/models.py:3113 +#: common/models.py:3136 msgid "Optional unit symbol" msgstr "" -#: common/models.py:3120 templates/InvenTree/settings/settings_staff_js.html:71 +#: common/models.py:3143 templates/InvenTree/settings/settings_staff_js.html:71 msgid "Definition" msgstr "" -#: common/models.py:3121 +#: common/models.py:3144 msgid "Unit definition" msgstr "" @@ -3736,7 +3614,7 @@ msgstr "" msgid "A order that is assigned to you was canceled" msgstr "" -#: common/notifications.py:330 common/notifications.py:337 order/api.py:468 +#: common/notifications.py:330 common/notifications.py:337 order/api.py:472 msgid "Items Received" msgstr "" @@ -3752,63 +3630,63 @@ msgstr "" msgid "Error raised by plugin" msgstr "" -#: common/serializers.py:333 +#: common/serializers.py:366 msgid "Is Running" msgstr "" -#: common/serializers.py:339 +#: common/serializers.py:372 msgid "Pending Tasks" msgstr "" -#: common/serializers.py:345 +#: common/serializers.py:378 msgid "Scheduled Tasks" msgstr "" -#: common/serializers.py:351 +#: common/serializers.py:384 msgid "Failed Tasks" msgstr "" -#: common/serializers.py:366 +#: common/serializers.py:399 msgid "Task ID" msgstr "" -#: common/serializers.py:366 +#: common/serializers.py:399 msgid "Unique task ID" msgstr "" -#: common/serializers.py:368 +#: common/serializers.py:401 msgid "Lock" msgstr "" -#: common/serializers.py:368 +#: common/serializers.py:401 msgid "Lock time" msgstr "" -#: common/serializers.py:370 +#: common/serializers.py:403 msgid "Task name" msgstr "" -#: common/serializers.py:372 +#: common/serializers.py:405 msgid "Function" msgstr "" -#: common/serializers.py:372 +#: common/serializers.py:405 msgid "Function name" msgstr "" -#: common/serializers.py:374 +#: common/serializers.py:407 msgid "Arguments" msgstr "" -#: common/serializers.py:374 +#: common/serializers.py:407 msgid "Task arguments" msgstr "" -#: common/serializers.py:377 +#: common/serializers.py:410 msgid "Keyword Arguments" msgstr "" -#: common/serializers.py:377 +#: common/serializers.py:410 msgid "Task keyword arguments" msgstr "" @@ -3901,9 +3779,9 @@ msgid "Contact email address" msgstr "Kontaktní e-mailová adresa" #: company/models.py:139 company/templates/company/company_base.html:145 -#: order/models.py:331 order/templates/order/order_base.html:203 +#: order/models.py:343 order/templates/order/order_base.html:203 #: order/templates/order/return_order_base.html:174 -#: order/templates/order/sales_order_base.html:214 +#: order/templates/order/sales_order_base.html:218 msgid "Contact" msgstr "Kontakt" @@ -3949,7 +3827,7 @@ msgstr "" #: company/models.py:273 company/models.py:382 #: company/templates/company/company_base.html:8 -#: company/templates/company/company_base.html:12 stock/api.py:776 +#: company/templates/company/company_base.html:12 stock/api.py:812 #: templates/InvenTree/search.html:178 templates/js/translated/company.js:496 msgid "Company" msgstr "Společnost" @@ -4041,19 +3919,19 @@ msgstr "" msgid "Link to address information (external)" msgstr "" -#: company/models.py:489 company/models.py:791 stock/models.py:751 -#: stock/serializers.py:266 stock/templates/stock/item_base.html:142 +#: company/models.py:489 company/models.py:792 stock/models.py:768 +#: stock/serializers.py:395 stock/templates/stock/item_base.html:142 #: templates/js/translated/bom.js:622 msgid "Base Part" msgstr "Základní díl" -#: company/models.py:491 company/models.py:793 +#: company/models.py:491 company/models.py:794 msgid "Select part" msgstr "Zvolte díl" #: company/models.py:500 company/templates/company/company_base.html:82 #: company/templates/company/manufacturer_part.html:90 -#: company/templates/company/supplier_part.html:145 part/serializers.py:515 +#: company/templates/company/supplier_part.html:145 part/serializers.py:530 #: stock/templates/stock/item_base.html:207 #: templates/js/translated/company.js:507 #: templates/js/translated/company.js:1118 @@ -4068,13 +3946,13 @@ msgid "Select manufacturer" msgstr "Vyberte výrobce" #: company/models.py:507 company/templates/company/manufacturer_part.html:101 -#: company/templates/company/supplier_part.html:153 part/serializers.py:525 +#: company/templates/company/supplier_part.html:153 part/serializers.py:540 #: templates/js/translated/company.js:351 #: templates/js/translated/company.js:1117 #: templates/js/translated/company.js:1312 #: templates/js/translated/company.js:1630 templates/js/translated/part.js:1800 -#: templates/js/translated/purchase_order.js:1852 -#: templates/js/translated/purchase_order.js:2054 +#: templates/js/translated/purchase_order.js:1851 +#: templates/js/translated/purchase_order.js:2053 msgid "MPN" msgstr "" @@ -4086,61 +3964,60 @@ msgstr "Číslo dílu výrobce" msgid "URL for external manufacturer part link" msgstr "" -#: company/models.py:523 +#: company/models.py:524 msgid "Manufacturer part description" msgstr "Popis dílu výrobce" -#: company/models.py:580 company/models.py:607 company/models.py:823 +#: company/models.py:581 company/models.py:608 company/models.py:824 #: company/templates/company/manufacturer_part.html:7 #: company/templates/company/manufacturer_part.html:24 #: stock/templates/stock/item_base.html:217 msgid "Manufacturer Part" msgstr "Výrobce dílu" -#: company/models.py:614 +#: company/models.py:615 msgid "Parameter name" msgstr "Název parametru" -#: company/models.py:620 -#: report/templates/report/inventree_test_report_base.html:104 -#: stock/models.py:2436 templates/js/translated/company.js:1166 +#: company/models.py:621 report/templates/report/inventree_test_report.html:104 +#: stock/models.py:2429 templates/js/translated/company.js:1166 #: templates/js/translated/company.js:1419 templates/js/translated/part.js:1492 -#: templates/js/translated/stock.js:1519 +#: templates/js/translated/stock.js:1522 msgid "Value" msgstr "Hodnota" -#: company/models.py:621 +#: company/models.py:622 msgid "Parameter value" msgstr "Hodnota parametru" -#: company/models.py:628 company/templates/company/supplier_part.html:168 -#: part/admin.py:57 part/models.py:1009 part/models.py:3623 +#: company/models.py:629 company/templates/company/supplier_part.html:168 +#: part/admin.py:57 part/models.py:1052 part/models.py:3666 #: part/templates/part/part_base.html:284 #: templates/js/translated/company.js:1425 templates/js/translated/part.js:1511 -#: templates/js/translated/part.js:1615 templates/js/translated/part.js:2370 +#: templates/js/translated/part.js:1615 templates/js/translated/part.js:2369 msgid "Units" msgstr "Jednotky" -#: company/models.py:629 +#: company/models.py:630 msgid "Parameter units" msgstr "" -#: company/models.py:731 +#: company/models.py:732 msgid "Pack units must be compatible with the base part units" msgstr "" -#: company/models.py:738 +#: company/models.py:739 msgid "Pack units must be greater than zero" msgstr "" -#: company/models.py:752 +#: company/models.py:753 msgid "Linked manufacturer part must reference the same base part" msgstr "" -#: company/models.py:801 company/templates/company/company_base.html:87 -#: company/templates/company/supplier_part.html:129 order/models.py:465 +#: company/models.py:802 company/templates/company/company_base.html:87 +#: company/templates/company/supplier_part.html:129 order/models.py:486 #: order/templates/order/order_base.html:136 part/bom.py:272 part/bom.py:310 -#: part/serializers.py:499 plugin/builtin/suppliers/digikey.py:25 +#: part/serializers.py:514 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 @@ -4148,97 +4025,97 @@ msgstr "" #: templates/js/translated/company.js:511 #: templates/js/translated/company.js:1584 templates/js/translated/part.js:1768 #: templates/js/translated/pricing.js:498 -#: templates/js/translated/purchase_order.js:1690 +#: templates/js/translated/purchase_order.js:1689 #: templates/js/translated/table_filters.js:804 msgid "Supplier" msgstr "Dodavatel" -#: company/models.py:802 +#: company/models.py:803 msgid "Select supplier" msgstr "" -#: company/models.py:808 part/serializers.py:510 +#: company/models.py:809 part/serializers.py:525 msgid "Supplier stock keeping unit" msgstr "" -#: company/models.py:814 +#: company/models.py:815 msgid "Is this supplier part active?" msgstr "" -#: company/models.py:824 +#: company/models.py:825 msgid "Select manufacturer part" msgstr "" -#: company/models.py:831 +#: company/models.py:832 msgid "URL for external supplier part link" msgstr "" -#: company/models.py:839 +#: company/models.py:841 msgid "Supplier part description" msgstr "" -#: company/models.py:846 company/templates/company/supplier_part.html:187 -#: part/admin.py:418 part/models.py:4070 part/templates/part/upload_bom.html:59 +#: company/models.py:848 company/templates/company/supplier_part.html:187 +#: part/admin.py:420 part/models.py:4113 part/templates/part/upload_bom.html:59 #: 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 +#: report/templates/report/inventree_purchase_order_report.html:32 +#: report/templates/report/inventree_return_order_report.html:27 +#: report/templates/report/inventree_sales_order_report.html:32 +#: report/templates/report/inventree_stock_location_report.html:105 +#: stock/serializers.py:708 msgid "Note" msgstr "Poznámka" -#: company/models.py:855 part/models.py:1967 +#: company/models.py:857 part/models.py:2010 msgid "base cost" msgstr "" -#: company/models.py:856 part/models.py:1968 +#: company/models.py:858 part/models.py:2011 msgid "Minimum charge (e.g. stocking fee)" msgstr "" -#: company/models.py:863 company/templates/company/supplier_part.html:160 -#: stock/admin.py:224 stock/models.py:782 stock/serializers.py:1350 +#: company/models.py:865 company/templates/company/supplier_part.html:160 +#: stock/admin.py:224 stock/models.py:799 stock/serializers.py:1479 #: stock/templates/stock/item_base.html:240 #: templates/js/translated/company.js:1646 -#: templates/js/translated/stock.js:2423 +#: templates/js/translated/stock.js:2424 msgid "Packaging" msgstr "" -#: company/models.py:864 +#: company/models.py:866 msgid "Part packaging" msgstr "" -#: company/models.py:869 templates/js/translated/company.js:1651 +#: company/models.py:871 templates/js/translated/company.js:1651 #: 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 +#: templates/js/translated/purchase_order.js:2084 +#: templates/js/translated/purchase_order.js:2101 msgid "Pack Quantity" msgstr "" -#: company/models.py:871 +#: company/models.py:873 msgid "Total quantity supplied in a single pack. Leave empty for single items." msgstr "" -#: company/models.py:890 part/models.py:1974 +#: company/models.py:892 part/models.py:2017 msgid "multiple" msgstr "" -#: company/models.py:891 +#: company/models.py:893 msgid "Order multiple" msgstr "" -#: company/models.py:903 +#: company/models.py:905 msgid "Quantity available from supplier" msgstr "" -#: company/models.py:909 +#: company/models.py:911 msgid "Availability Updated" msgstr "" -#: company/models.py:910 +#: company/models.py:912 msgid "Date of last update of availability data" msgstr "" @@ -4257,7 +4134,7 @@ msgstr "" #: part/templates/part/part_base.html:146 #: templates/js/translated/company.js:1287 #: templates/js/translated/company.js:1575 -#: templates/js/translated/model_renderers.js:306 +#: templates/js/translated/model_renderers.js:312 #: templates/js/translated/part.js:814 templates/js/translated/part.js:1218 msgid "Inactive" msgstr "" @@ -4293,11 +4170,11 @@ msgstr "Odstranit společnost" #: 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 +#: report/templates/report/inventree_build_order_report.html:98 +#: report/templates/report/inventree_purchase_order_report.html:40 +#: report/templates/report/inventree_sales_order_report.html:40 +#: report/templates/report/inventree_test_report.html:84 +#: report/templates/report/inventree_test_report.html:163 msgid "Part image" msgstr "" @@ -4316,15 +4193,15 @@ msgstr "Stáhnout obrázek z URL" msgid "Delete image" msgstr "Smazat obrázek" -#: company/templates/company/company_base.html:92 order/models.py:910 -#: order/models.py:2008 order/templates/order/return_order_base.html:131 -#: order/templates/order/sales_order_base.html:144 stock/models.py:804 -#: stock/models.py:805 stock/serializers.py:1100 +#: company/templates/company/company_base.html:92 order/models.py:940 +#: order/models.py:2068 order/templates/order/return_order_base.html:131 +#: order/templates/order/sales_order_base.html:148 stock/models.py:821 +#: stock/models.py:822 stock/serializers.py:1229 #: stock/templates/stock/item_base.html:405 #: templates/email/overdue_sales_order.html:16 #: templates/js/translated/company.js:503 -#: templates/js/translated/return_order.js:296 -#: templates/js/translated/sales_order.js:784 +#: templates/js/translated/return_order.js:295 +#: templates/js/translated/sales_order.js:820 #: templates/js/translated/stock.js:2959 #: templates/js/translated/table_filters.js:808 msgid "Customer" @@ -4334,10 +4211,10 @@ msgstr "Zákazník" msgid "Uses default currency" msgstr "" -#: company/templates/company/company_base.html:124 order/models.py:341 +#: company/templates/company/company_base.html:124 order/models.py:353 #: order/templates/order/order_base.html:210 #: order/templates/order/return_order_base.html:181 -#: order/templates/order/sales_order_base.html:221 +#: order/templates/order/sales_order_base.html:225 msgid "Address" msgstr "Adresa" @@ -4346,7 +4223,7 @@ msgid "Phone" msgstr "Telefon" #: company/templates/company/company_base.html:211 -#: part/templates/part/part_base.html:528 +#: part/templates/part/part_base.html:527 msgid "Remove Image" msgstr "" @@ -4355,19 +4232,19 @@ msgid "Remove associated image from this company" msgstr "" #: company/templates/company/company_base.html:214 -#: part/templates/part/part_base.html:531 +#: part/templates/part/part_base.html:530 #: templates/InvenTree/settings/user.html:88 #: templates/InvenTree/settings/user_sso.html:43 msgid "Remove" msgstr "Odstranit" #: company/templates/company/company_base.html:243 -#: part/templates/part/part_base.html:560 +#: part/templates/part/part_base.html:559 msgid "Upload Image" msgstr "" #: company/templates/company/company_base.html:258 -#: part/templates/part/part_base.html:614 +#: part/templates/part/part_base.html:613 msgid "Download Image" msgstr "" @@ -4520,7 +4397,7 @@ msgid "Delete manufacturer part" msgstr "" #: company/templates/company/manufacturer_part.html:65 -#: company/templates/company/supplier_part.html:97 order/api.py:454 +#: company/templates/company/supplier_part.html:97 order/api.py:458 msgid "Internal Part" msgstr "" @@ -4530,7 +4407,7 @@ msgstr "" #: company/templates/company/manufacturer_part.html:119 #: company/templates/company/supplier_part.html:15 company/views.py:31 -#: part/admin.py:122 part/serializers.py:821 +#: part/admin.py:122 part/serializers.py:836 #: part/templates/part/part_sidebar.html:33 templates/InvenTree/search.html:190 #: templates/navbar.html:48 msgid "Suppliers" @@ -4580,11 +4457,11 @@ msgid "Addresses" msgstr "" #: company/templates/company/supplier_part.html:7 -#: company/templates/company/supplier_part.html:24 order/api.py:448 -#: stock/models.py:762 stock/templates/stock/item_base.html:233 +#: company/templates/company/supplier_part.html:24 order/api.py:452 +#: stock/models.py:779 stock/templates/stock/item_base.html:233 #: templates/js/translated/company.js:1600 #: templates/js/translated/purchase_order.js:752 -#: templates/js/translated/stock.js:2279 +#: templates/js/translated/stock.js:2280 msgid "Supplier Part" msgstr "" @@ -4630,11 +4507,11 @@ 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 +#: part/bom.py:311 part/serializers.py:524 #: 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 +#: templates/js/translated/purchase_order.js:1850 +#: templates/js/translated/purchase_order.js:2028 msgid "SKU" msgstr "" @@ -4643,12 +4520,12 @@ msgid "Supplier Part Stock" msgstr "Sklad dílu dodavatele" #: company/templates/company/supplier_part.html:209 -#: part/templates/part/detail.html:24 stock/templates/stock/location.html:199 +#: part/templates/part/detail.html:24 stock/templates/stock/location.html:206 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 +#: part/templates/part/detail.html:25 stock/templates/stock/location.html:207 #: templates/js/translated/stock.js:537 msgid "New Stock Item" msgstr "" @@ -4680,13 +4557,13 @@ msgid "Update Part Availability" msgstr "" #: company/templates/company/supplier_part_sidebar.html:5 -#: part/serializers.py:820 part/stocktake.py:223 +#: part/serializers.py:835 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/serializers.py:916 stock/serializers.py:1080 #: stock/templates/stock/location.html:170 -#: stock/templates/stock/location.html:184 -#: stock/templates/stock/location.html:196 +#: stock/templates/stock/location.html:191 +#: stock/templates/stock/location.html:203 #: stock/templates/stock/location_sidebar.html:7 #: templates/InvenTree/search.html:155 templates/js/translated/part.js:1060 #: templates/js/translated/search.js:172 templates/js/translated/stock.js:2766 @@ -4723,126 +4600,52 @@ msgstr "" msgid "New Company" msgstr "" -#: label/api.py:247 -msgid "Error printing label" -msgstr "" +#: generic/states/tests.py:18 order/status_codes.py:13 +msgid "Placed" +msgstr "Umístěno" -#: 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:3494 report/models.py:324 -#: 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:317 -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:345 report/models.py:496 -#: report/models.py:532 report/models.py:568 report/models.py:750 -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 +#: machine/machine_types/label_printer.py:218 msgid "Copies" msgstr "" -#: machine/machine_types/label_printer.py:218 +#: machine/machine_types/label_printer.py:219 msgid "Number of copies to print for each label" msgstr "" -#: machine/machine_types/label_printer.py:233 +#: machine/machine_types/label_printer.py:234 msgid "Connected" msgstr "" -#: machine/machine_types/label_printer.py:234 order/api.py:1511 -#: templates/js/translated/sales_order.js:1042 +#: machine/machine_types/label_printer.py:235 order/api.py:1515 +#: templates/js/translated/sales_order.js:1078 msgid "Unknown" msgstr "" -#: machine/machine_types/label_printer.py:235 +#: machine/machine_types/label_printer.py:236 msgid "Printing" msgstr "" -#: machine/machine_types/label_printer.py:236 +#: machine/machine_types/label_printer.py:237 msgid "No media" msgstr "" -#: machine/machine_types/label_printer.py:237 +#: machine/machine_types/label_printer.py:238 msgid "Disconnected" msgstr "" -#: machine/machine_types/label_printer.py:244 +#: machine/machine_types/label_printer.py:245 msgid "Label Printer" msgstr "" -#: machine/machine_types/label_printer.py:245 +#: machine/machine_types/label_printer.py:246 msgid "Directly print labels for various items." msgstr "" -#: machine/machine_types/label_printer.py:251 +#: machine/machine_types/label_printer.py:252 msgid "Printer Location" msgstr "" -#: machine/machine_types/label_printer.py:252 +#: machine/machine_types/label_printer.py:253 msgid "Scope the printer to a specific location" msgstr "" @@ -4903,63 +4706,64 @@ 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 +#: report/templates/report/inventree_purchase_order_report.html:31 +#: report/templates/report/inventree_sales_order_report.html:31 #: templates/js/translated/order.js:327 -#: templates/js/translated/purchase_order.js:2126 -#: templates/js/translated/sales_order.js:1847 +#: templates/js/translated/purchase_order.js:2125 +#: templates/js/translated/sales_order.js:1883 msgid "Total Price" msgstr "" -#: order/api.py:157 order/templates/order/order_base.html:118 +#: order/api.py:161 order/serializers.py:91 +#: order/templates/order/order_base.html:118 #: order/templates/order/return_order_base.html:113 -#: order/templates/order/sales_order_base.html:118 +#: order/templates/order/sales_order_base.html:122 msgid "Order Status" msgstr "" -#: order/api.py:161 templates/js/translated/table_filters.js:194 +#: order/api.py:165 templates/js/translated/table_filters.js:194 #: templates/js/translated/table_filters.js:779 msgid "Has Pricing" msgstr "" -#: order/api.py:236 +#: order/api.py:240 msgid "No matching purchase order found" msgstr "" -#: order/api.py:433 order/api.py:813 order/models.py:1382 order/models.py:1489 -#: order/models.py:1535 order/models.py:1649 order/models.py:1803 -#: order/models.py:2207 order/models.py:2258 -#: templates/js/translated/sales_order.js:1488 +#: order/api.py:437 order/api.py:817 order/models.py:1431 order/models.py:1540 +#: order/models.py:1586 order/models.py:1700 order/models.py:1854 +#: order/models.py:2267 order/models.py:2318 +#: templates/js/translated/sales_order.js:1524 msgid "Order" msgstr "" -#: order/api.py:437 order/api.py:834 +#: order/api.py:441 order/api.py:838 msgid "Order Complete" msgstr "" -#: order/api.py:458 +#: order/api.py:462 msgid "Order Pending" msgstr "" -#: order/api.py:1505 order/models.py:1383 order/models.py:1490 -#: order/templates/order/order_base.html:9 +#: order/api.py:1509 order/models.py:380 order/models.py:1432 +#: order/models.py:1541 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 +#: report/templates/report/inventree_purchase_order_report.html:14 +#: stock/serializers.py:119 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 +#: templates/js/translated/purchase_order.js:1673 +#: templates/js/translated/stock.js:2260 templates/js/translated/stock.js:2907 msgid "Purchase Order" msgstr "" -#: order/api.py:1509 order/models.py:2208 order/models.py:2259 -#: order/templates/order/return_order_base.html:9 +#: order/api.py:1513 order/models.py:2017 order/models.py:2268 +#: order/models.py:2319 order/templates/order/return_order_base.html:9 #: order/templates/order/return_order_base.html:28 -#: report/templates/report/inventree_return_order_report_base.html:13 -#: templates/js/translated/return_order.js:281 +#: report/templates/report/inventree_return_order_report.html:13 +#: templates/js/translated/return_order.js:280 #: templates/js/translated/stock.js:2941 msgid "Return Order" msgstr "" @@ -4976,517 +4780,575 @@ msgstr "" msgid "Currency for this order (leave blank to use company default)" msgstr "" -#: order/models.py:246 +#: order/models.py:247 msgid "Contact does not match selected company" msgstr "" -#: order/models.py:278 +#: order/models.py:290 msgid "Order description (optional)" msgstr "" -#: order/models.py:287 +#: order/models.py:299 msgid "Select project code for this order" msgstr "" -#: order/models.py:291 order/models.py:1288 order/models.py:1702 +#: order/models.py:303 order/models.py:1337 order/models.py:1753 msgid "Link to external page" msgstr "" -#: order/models.py:299 +#: order/models.py:311 msgid "Expected date for order delivery. Order will be overdue after this date." msgstr "" -#: order/models.py:313 +#: order/models.py:325 msgid "Created By" msgstr "" -#: order/models.py:321 +#: order/models.py:333 msgid "User or group responsible for this order" msgstr "" -#: order/models.py:332 +#: order/models.py:344 msgid "Point of contact for this order" msgstr "" -#: order/models.py:342 +#: order/models.py:354 msgid "Company address for this order" msgstr "" -#: order/models.py:443 order/models.py:899 +#: order/models.py:464 order/models.py:929 msgid "Order reference" msgstr "" -#: order/models.py:451 order/models.py:923 +#: order/models.py:472 order/models.py:953 msgid "Purchase order status" msgstr "" -#: order/models.py:466 +#: order/models.py:487 msgid "Company from which the items are being ordered" msgstr "" -#: order/models.py:477 order/templates/order/order_base.html:148 -#: templates/js/translated/purchase_order.js:1703 +#: order/models.py:498 order/templates/order/order_base.html:148 +#: templates/js/translated/purchase_order.js:1702 msgid "Supplier Reference" msgstr "" -#: order/models.py:478 +#: order/models.py:499 msgid "Supplier order reference code" msgstr "" -#: order/models.py:487 +#: order/models.py:508 msgid "received by" msgstr "" -#: order/models.py:493 order/models.py:2034 +#: order/models.py:514 order/models.py:2094 msgid "Issue Date" msgstr "" -#: order/models.py:494 order/models.py:2035 +#: order/models.py:515 order/models.py:2095 msgid "Date order was issued" msgstr "" -#: order/models.py:501 order/models.py:2042 +#: order/models.py:522 order/models.py:2102 msgid "Date order was completed" msgstr "" -#: order/models.py:545 +#: order/models.py:566 msgid "Part supplier must match PO supplier" msgstr "" -#: order/models.py:739 +#: order/models.py:760 msgid "Quantity must be a positive number" msgstr "" -#: order/models.py:911 +#: order/models.py:941 msgid "Company to which the items are being sold" msgstr "" -#: order/models.py:934 order/models.py:2027 +#: order/models.py:964 order/models.py:2087 msgid "Customer Reference " msgstr "" -#: order/models.py:935 order/models.py:2028 +#: order/models.py:965 order/models.py:2088 msgid "Customer order reference code" msgstr "" -#: order/models.py:939 order/models.py:1656 -#: templates/js/translated/sales_order.js:843 -#: templates/js/translated/sales_order.js:1024 +#: order/models.py:969 order/models.py:1707 +#: templates/js/translated/sales_order.js:879 +#: templates/js/translated/sales_order.js:1060 msgid "Shipment Date" msgstr "" -#: order/models.py:948 +#: order/models.py:978 msgid "shipped by" msgstr "" -#: order/models.py:999 -msgid "Order cannot be completed as no parts have been assigned" +#: order/models.py:1027 +#, fuzzy +#| msgid "Build output is already completed" +msgid "Order is already complete" +msgstr "Výstup sestavení je již dokončen" + +#: order/models.py:1030 +msgid "Order is already cancelled" msgstr "" -#: order/models.py:1004 +#: order/models.py:1034 msgid "Only an open order can be marked as complete" msgstr "" -#: order/models.py:1008 templates/js/translated/sales_order.js:506 +#: order/models.py:1038 msgid "Order cannot be completed as there are incomplete shipments" msgstr "" -#: order/models.py:1013 +#: order/models.py:1043 msgid "Order cannot be completed as there are incomplete line items" msgstr "" -#: order/models.py:1260 +#: order/models.py:1309 msgid "Item quantity" msgstr "" -#: order/models.py:1277 +#: order/models.py:1326 msgid "Line item reference" msgstr "" -#: order/models.py:1284 +#: order/models.py:1333 msgid "Line item notes" msgstr "" -#: order/models.py:1296 +#: order/models.py:1345 msgid "Target date for this line item (leave blank to use the target date from the order)" msgstr "" -#: order/models.py:1317 +#: order/models.py:1366 msgid "Line item description (optional)" msgstr "" -#: order/models.py:1323 +#: order/models.py:1372 msgid "Context" msgstr "" -#: order/models.py:1324 +#: order/models.py:1373 msgid "Additional context for this line" msgstr "" -#: order/models.py:1334 +#: order/models.py:1383 msgid "Unit price" msgstr "" -#: order/models.py:1367 +#: order/models.py:1416 msgid "Supplier part must match supplier" msgstr "" -#: order/models.py:1374 +#: order/models.py:1423 msgid "deleted" msgstr "" -#: order/models.py:1402 +#: order/models.py:1451 msgid "Supplier part" msgstr "" -#: order/models.py:1409 order/templates/order/order_base.html:196 +#: order/models.py:1458 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/purchase_order.js:2169 +#: templates/js/translated/return_order.js:763 #: templates/js/translated/table_filters.js:120 #: templates/js/translated/table_filters.js:602 msgid "Received" msgstr "" -#: order/models.py:1410 +#: order/models.py:1459 msgid "Number of items received" msgstr "" -#: order/models.py:1418 stock/models.py:923 stock/serializers.py:400 +#: order/models.py:1467 stock/models.py:940 stock/serializers.py:529 #: stock/templates/stock/item_base.html:183 -#: templates/js/translated/stock.js:2310 +#: templates/js/translated/stock.js:2311 msgid "Purchase Price" msgstr "" -#: order/models.py:1419 +#: order/models.py:1468 msgid "Unit purchase price" msgstr "" -#: order/models.py:1434 +#: order/models.py:1483 msgid "Where does the Purchaser want this item to be stored?" msgstr "" -#: order/models.py:1523 +#: order/models.py:1574 msgid "Virtual part cannot be assigned to a sales order" msgstr "" -#: order/models.py:1528 +#: order/models.py:1579 msgid "Only salable parts can be assigned to a sales order" msgstr "" -#: order/models.py:1554 part/templates/part/part_pricing.html:107 +#: order/models.py:1605 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:1555 +#: order/models.py:1606 msgid "Unit sale price" msgstr "" -#: order/models.py:1565 +#: order/models.py:1615 order/status_codes.py:43 +#: templates/js/translated/sales_order.js:1559 +#: templates/js/translated/sales_order.js:1680 +#: templates/js/translated/sales_order.js:1993 +msgid "Shipped" +msgstr "Odesláno" + +#: order/models.py:1616 msgid "Shipped quantity" msgstr "" -#: order/models.py:1657 +#: order/models.py:1708 msgid "Date of shipment" msgstr "" -#: order/models.py:1663 templates/js/translated/sales_order.js:1036 +#: order/models.py:1714 templates/js/translated/sales_order.js:1072 msgid "Delivery Date" msgstr "" -#: order/models.py:1664 +#: order/models.py:1715 msgid "Date of delivery of shipment" msgstr "" -#: order/models.py:1672 +#: order/models.py:1723 msgid "Checked By" msgstr "" -#: order/models.py:1673 +#: order/models.py:1724 msgid "User who checked this shipment" msgstr "" -#: order/models.py:1680 order/models.py:1893 order/serializers.py:1350 -#: order/serializers.py:1460 templates/js/translated/model_renderers.js:448 +#: order/models.py:1731 order/models.py:1944 order/serializers.py:1354 +#: order/serializers.py:1464 templates/js/translated/model_renderers.js:454 msgid "Shipment" msgstr "" -#: order/models.py:1681 +#: order/models.py:1732 msgid "Shipment number" msgstr "" -#: order/models.py:1689 +#: order/models.py:1740 msgid "Tracking Number" msgstr "" -#: order/models.py:1690 +#: order/models.py:1741 msgid "Shipment tracking information" msgstr "" -#: order/models.py:1697 +#: order/models.py:1748 msgid "Invoice Number" msgstr "" -#: order/models.py:1698 +#: order/models.py:1749 msgid "Reference number for associated invoice" msgstr "" -#: order/models.py:1718 +#: order/models.py:1769 msgid "Shipment has already been sent" msgstr "" -#: order/models.py:1721 +#: order/models.py:1772 msgid "Shipment has no allocated stock items" msgstr "" -#: order/models.py:1839 order/models.py:1841 +#: order/models.py:1890 order/models.py:1892 msgid "Stock item has not been assigned" msgstr "" -#: order/models.py:1848 +#: order/models.py:1899 msgid "Cannot allocate stock item to a line with a different part" msgstr "" -#: order/models.py:1851 +#: order/models.py:1902 msgid "Cannot allocate stock to a line without a part" msgstr "" -#: order/models.py:1854 +#: order/models.py:1905 msgid "Allocation quantity cannot exceed stock quantity" msgstr "" -#: order/models.py:1873 order/serializers.py:1227 +#: order/models.py:1924 order/serializers.py:1231 msgid "Quantity must be 1 for serialized stock item" msgstr "" -#: order/models.py:1876 +#: order/models.py:1927 msgid "Sales order does not match shipment" msgstr "" -#: order/models.py:1877 plugin/base/barcodes/api.py:481 +#: order/models.py:1928 plugin/base/barcodes/api.py:481 msgid "Shipment does not match sales order" msgstr "" -#: order/models.py:1885 +#: order/models.py:1936 msgid "Line" msgstr "" -#: order/models.py:1894 +#: order/models.py:1945 msgid "Sales order shipment reference" msgstr "" -#: order/models.py:1907 order/models.py:2215 -#: templates/js/translated/return_order.js:722 +#: order/models.py:1958 order/models.py:2275 +#: templates/js/translated/return_order.js:721 msgid "Item" msgstr "" -#: order/models.py:1908 +#: order/models.py:1959 msgid "Select stock item to allocate" msgstr "" -#: order/models.py:1917 +#: order/models.py:1968 msgid "Enter stock allocation quantity" msgstr "" -#: order/models.py:1997 +#: order/models.py:2057 msgid "Return Order reference" msgstr "" -#: order/models.py:2009 +#: order/models.py:2069 msgid "Company from which items are being returned" msgstr "" -#: order/models.py:2021 +#: order/models.py:2081 msgid "Return order status" msgstr "" -#: order/models.py:2200 +#: order/models.py:2260 msgid "Only serialized items can be assigned to a Return Order" msgstr "" -#: order/models.py:2216 +#: order/models.py:2276 msgid "Select item to return from customer" msgstr "" -#: order/models.py:2222 +#: order/models.py:2282 msgid "Received Date" msgstr "" -#: order/models.py:2223 +#: order/models.py:2283 msgid "The date this this return item was received" msgstr "" -#: order/models.py:2234 templates/js/translated/return_order.js:733 +#: order/models.py:2294 templates/js/translated/return_order.js:732 #: templates/js/translated/table_filters.js:123 msgid "Outcome" msgstr "" -#: order/models.py:2235 +#: order/models.py:2295 msgid "Outcome for this line item" msgstr "" -#: order/models.py:2242 +#: order/models.py:2302 msgid "Cost associated with return or repair for this line item" msgstr "" -#: order/serializers.py:283 +#: order/serializers.py:80 order/templates/order/po_sidebar.html:5 +#: order/templates/order/return_order_detail.html:18 +#: order/templates/order/so_sidebar.html:5 +#: report/templates/report/inventree_purchase_order_report.html:22 +#: report/templates/report/inventree_return_order_report.html:19 +#: report/templates/report/inventree_sales_order_report.html:22 +msgid "Line Items" +msgstr "" + +#: order/serializers.py:84 +msgid "Completed Lines" +msgstr "" + +#: order/serializers.py:287 msgid "Order cannot be cancelled" msgstr "" -#: order/serializers.py:298 order/serializers.py:1243 +#: order/serializers.py:302 order/serializers.py:1247 msgid "Allow order to be closed with incomplete line items" msgstr "" -#: order/serializers.py:308 order/serializers.py:1253 +#: order/serializers.py:312 order/serializers.py:1257 msgid "Order has incomplete line items" msgstr "" -#: order/serializers.py:436 +#: order/serializers.py:440 msgid "Order is not open" msgstr "" -#: order/serializers.py:457 +#: order/serializers.py:461 msgid "Auto Pricing" msgstr "" -#: order/serializers.py:459 +#: order/serializers.py:463 msgid "Automatically calculate purchase price based on supplier part data" msgstr "" -#: order/serializers.py:469 +#: order/serializers.py:473 msgid "Purchase price currency" msgstr "" -#: order/serializers.py:475 +#: order/serializers.py:479 msgid "Merge Items" msgstr "" -#: order/serializers.py:477 +#: order/serializers.py:481 msgid "Merge items with the same part, destination and target date into one line item" msgstr "" -#: order/serializers.py:495 +#: order/serializers.py:499 msgid "Supplier part must be specified" msgstr "" -#: order/serializers.py:498 +#: order/serializers.py:502 msgid "Purchase order must be specified" msgstr "" -#: order/serializers.py:506 +#: order/serializers.py:510 msgid "Supplier must match purchase order" msgstr "" -#: order/serializers.py:507 +#: order/serializers.py:511 msgid "Purchase order must match supplier" msgstr "" -#: order/serializers.py:546 order/serializers.py:1321 +#: order/serializers.py:550 order/serializers.py:1325 msgid "Line Item" msgstr "" -#: order/serializers.py:552 +#: order/serializers.py:556 msgid "Line item does not match purchase order" msgstr "" -#: order/serializers.py:562 order/serializers.py:670 order/serializers.py:1676 +#: order/serializers.py:566 order/serializers.py:674 order/serializers.py:1680 msgid "Select destination location for received items" msgstr "" -#: order/serializers.py:578 templates/js/translated/purchase_order.js:1130 +#: order/serializers.py:582 templates/js/translated/purchase_order.js:1130 msgid "Enter batch code for incoming stock items" msgstr "" -#: order/serializers.py:586 templates/js/translated/purchase_order.js:1154 +#: order/serializers.py:590 templates/js/translated/purchase_order.js:1154 msgid "Enter serial numbers for incoming stock items" msgstr "" -#: order/serializers.py:597 templates/js/translated/barcode.js:52 +#: order/serializers.py:601 templates/js/translated/barcode.js:52 msgid "Barcode" msgstr "" -#: order/serializers.py:598 +#: order/serializers.py:602 msgid "Scanned barcode" msgstr "" -#: order/serializers.py:614 +#: order/serializers.py:618 msgid "Barcode is already in use" msgstr "" -#: order/serializers.py:638 +#: order/serializers.py:642 msgid "An integer quantity must be provided for trackable parts" msgstr "" -#: order/serializers.py:686 order/serializers.py:1692 +#: order/serializers.py:690 order/serializers.py:1696 msgid "Line items must be provided" msgstr "" -#: order/serializers.py:702 +#: order/serializers.py:706 msgid "Destination location must be specified" msgstr "" -#: order/serializers.py:713 +#: order/serializers.py:717 msgid "Supplied barcode values must be unique" msgstr "" -#: order/serializers.py:1070 +#: order/serializers.py:1074 msgid "Sale price currency" msgstr "" -#: order/serializers.py:1130 +#: order/serializers.py:1134 msgid "No shipment details provided" msgstr "" -#: order/serializers.py:1191 order/serializers.py:1330 +#: order/serializers.py:1195 order/serializers.py:1334 msgid "Line item is not associated with this order" msgstr "" -#: order/serializers.py:1210 +#: order/serializers.py:1214 msgid "Quantity must be positive" msgstr "" -#: order/serializers.py:1340 +#: order/serializers.py:1344 msgid "Enter serial numbers to allocate" msgstr "" -#: order/serializers.py:1362 order/serializers.py:1468 +#: order/serializers.py:1366 order/serializers.py:1472 msgid "Shipment has already been shipped" msgstr "" -#: order/serializers.py:1365 order/serializers.py:1471 +#: order/serializers.py:1369 order/serializers.py:1475 msgid "Shipment is not associated with this order" msgstr "" -#: order/serializers.py:1412 +#: order/serializers.py:1416 msgid "No match found for the following serial numbers" msgstr "" -#: order/serializers.py:1419 +#: order/serializers.py:1423 msgid "The following serial numbers are already allocated" msgstr "" -#: order/serializers.py:1646 +#: order/serializers.py:1650 msgid "Return order line item" msgstr "" -#: order/serializers.py:1652 +#: order/serializers.py:1656 msgid "Line item does not match return order" msgstr "" -#: order/serializers.py:1655 +#: order/serializers.py:1659 msgid "Line item has already been received" msgstr "" -#: order/serializers.py:1684 +#: order/serializers.py:1688 msgid "Items can only be received against orders which are in progress" msgstr "" -#: order/serializers.py:1762 +#: order/serializers.py:1766 msgid "Line price currency" msgstr "" +#: order/status_codes.py:16 order/status_codes.py:46 stock/status_codes.py:16 +msgid "Lost" +msgstr "Ztraceno" + +#: order/status_codes.py:17 order/status_codes.py:47 stock/status_codes.py:22 +msgid "Returned" +msgstr "Vráceno" + +#: order/status_codes.py:40 order/status_codes.py:67 +msgid "In Progress" +msgstr "Zpracovává se" + +#: order/status_codes.py:85 +msgid "Return" +msgstr "Vrátit zpět" + +#: order/status_codes.py:88 +msgid "Repair" +msgstr "Oprava" + +#: order/status_codes.py:91 +msgid "Replace" +msgstr "Náhrada" + +#: order/status_codes.py:94 +msgid "Refund" +msgstr "Vrácení peněz" + +#: order/status_codes.py:97 +msgid "Reject" +msgstr "Odmítnout" + #: order/tasks.py:25 msgid "Overdue Purchase Order" msgstr "" @@ -5553,7 +5415,7 @@ msgstr "" #: order/templates/order/order_base.html:84 #: order/templates/order/return_order_base.html:87 -#: order/templates/order/sales_order_base.html:93 +#: order/templates/order/sales_order_base.html:97 msgid "Complete Order" msgstr "" @@ -5563,13 +5425,13 @@ msgstr "" #: order/templates/order/order_base.html:106 #: order/templates/order/return_order_base.html:101 -#: order/templates/order/sales_order_base.html:106 +#: order/templates/order/sales_order_base.html:110 msgid "Order Reference" msgstr "" #: order/templates/order/order_base.html:111 #: order/templates/order/return_order_base.html:106 -#: order/templates/order/sales_order_base.html:111 +#: order/templates/order/sales_order_base.html:115 msgid "Order Description" msgstr "" @@ -5578,19 +5440,19 @@ msgid "No suppplier information available" msgstr "" #: order/templates/order/order_base.html:154 -#: order/templates/order/sales_order_base.html:157 +#: order/templates/order/sales_order_base.html:161 msgid "Completed Line Items" msgstr "" #: order/templates/order/order_base.html:160 -#: order/templates/order/sales_order_base.html:163 -#: order/templates/order/sales_order_base.html:173 +#: order/templates/order/sales_order_base.html:167 +#: order/templates/order/sales_order_base.html:177 msgid "Incomplete" msgstr "" #: order/templates/order/order_base.html:179 #: order/templates/order/return_order_base.html:157 -#: report/templates/report/inventree_build_order_base.html:121 +#: report/templates/report/inventree_build_order_report.html:121 msgid "Issued" msgstr "" @@ -5600,15 +5462,15 @@ msgstr "" #: order/templates/order/order_base.html:228 #: order/templates/order/return_order_base.html:199 -#: order/templates/order/sales_order_base.html:239 +#: order/templates/order/sales_order_base.html:243 msgid "Total cost could not be calculated" msgstr "" -#: order/templates/order/order_base.html:318 +#: order/templates/order/order_base.html:314 msgid "Purchase Order QR Code" msgstr "" -#: order/templates/order/order_base.html:330 +#: order/templates/order/order_base.html:326 msgid "Link Barcode to Purchase Order" msgstr "" @@ -5662,11 +5524,11 @@ msgstr "" #: 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/build.js:1629 #: 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/return_order.js:505 +#: templates/js/translated/sales_order.js:1145 #: templates/js/translated/stock.js:714 templates/js/translated/stock.js:883 #: templates/patterns/wizard/match_fields.html:70 msgid "Remove row" @@ -5708,15 +5570,6 @@ msgstr "" 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 "" @@ -5729,7 +5582,7 @@ msgstr "" #: 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/return_order.js:458 #: templates/js/translated/sales_order.js:237 msgid "Add Line Item" msgstr "" @@ -5778,30 +5631,30 @@ 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 +#: order/templates/order/sales_order_base.html:155 +#: templates/js/translated/return_order.js:308 +#: templates/js/translated/sales_order.js:833 msgid "Customer Reference" msgstr "" #: order/templates/order/return_order_base.html:195 -#: order/templates/order/sales_order_base.html:235 +#: order/templates/order/sales_order_base.html:239 #: part/templates/part/part_pricing.html:32 #: part/templates/part/part_pricing.html:58 #: part/templates/part/part_pricing.html:99 #: part/templates/part/part_pricing.html:114 #: templates/js/translated/part.js:1072 -#: templates/js/translated/purchase_order.js:1753 -#: templates/js/translated/return_order.js:381 -#: templates/js/translated/sales_order.js:855 +#: templates/js/translated/purchase_order.js:1752 +#: templates/js/translated/return_order.js:380 +#: templates/js/translated/sales_order.js:891 msgid "Total Cost" msgstr "" -#: order/templates/order/return_order_base.html:263 +#: order/templates/order/return_order_base.html:259 msgid "Return Order QR Code" msgstr "" -#: order/templates/order/return_order_base.html:275 +#: order/templates/order/return_order_base.html:271 msgid "Link Barcode to Return Order" msgstr "" @@ -5819,25 +5672,30 @@ msgid "Ship Items" msgstr "" #: order/templates/order/sales_order_base.html:92 -#: templates/js/translated/sales_order.js:484 +#: order/templates/order/sales_order_base.html:93 +msgid "Mark As Shipped" +msgstr "" + +#: order/templates/order/sales_order_base.html:96 +#: templates/js/translated/sales_order.js:536 msgid "Complete Sales Order" msgstr "" -#: order/templates/order/sales_order_base.html:131 +#: order/templates/order/sales_order_base.html:135 msgid "This Sales Order has not been fully allocated" msgstr "" -#: order/templates/order/sales_order_base.html:169 +#: order/templates/order/sales_order_base.html:173 #: order/templates/order/sales_order_detail.html:99 #: order/templates/order/so_sidebar.html:11 msgid "Completed Shipments" msgstr "" -#: order/templates/order/sales_order_base.html:312 +#: order/templates/order/sales_order_base.html:321 msgid "Sales Order QR Code" msgstr "" -#: order/templates/order/sales_order_base.html:324 +#: order/templates/order/sales_order_base.html:333 msgid "Link Barcode to Sales Order" msgstr "" @@ -5881,12 +5739,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:3921 part/stocktake.py:218 +#: part/admin.py:39 part/admin.py:406 part/models.py:3964 part/stocktake.py:218 #: stock/admin.py:153 msgid "Part ID" msgstr "ID dílu" -#: part/admin.py:41 part/admin.py:411 part/models.py:3922 part/stocktake.py:219 +#: part/admin.py:41 part/admin.py:413 part/models.py:3965 part/stocktake.py:219 #: stock/admin.py:157 msgid "Part Name" msgstr "Název dílu" @@ -5895,20 +5753,20 @@ msgstr "Název dílu" msgid "Part Description" msgstr "Popis dílu" -#: part/admin.py:48 part/models.py:904 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 +#: part/admin.py:48 part/models.py:947 part/templates/part/part_base.html:269 +#: report/templates/report/inventree_stock_location_report.html:103 +#: templates/js/translated/part.js:1226 templates/js/translated/part.js:2340 +#: templates/js/translated/stock.js:2036 msgid "IPN" msgstr "" -#: part/admin.py:50 part/models.py:913 part/templates/part/part_base.html:277 -#: report/models.py:195 templates/js/translated/part.js:1231 -#: templates/js/translated/part.js:2347 +#: part/admin.py:50 part/models.py:956 part/templates/part/part_base.html:277 +#: report/models.py:161 templates/js/translated/part.js:1231 +#: templates/js/translated/part.js:2346 msgid "Revision" msgstr "" -#: part/admin.py:53 part/admin.py:317 part/models.py:886 +#: part/admin.py:53 part/admin.py:319 part/models.py:929 #: part/templates/part/category.html:94 part/templates/part/part_base.html:298 msgid "Keywords" msgstr "" @@ -5917,15 +5775,15 @@ msgstr "" msgid "Part Image" msgstr "" -#: part/admin.py:63 part/admin.py:300 part/stocktake.py:221 +#: part/admin.py:63 part/admin.py:302 part/stocktake.py:221 msgid "Category ID" msgstr "" -#: part/admin.py:67 part/admin.py:302 part/stocktake.py:222 +#: part/admin.py:67 part/admin.py:304 part/stocktake.py:222 msgid "Category Name" msgstr "" -#: part/admin.py:71 part/admin.py:314 +#: part/admin.py:71 part/admin.py:316 msgid "Default Location ID" msgstr "" @@ -5933,11 +5791,11 @@ msgstr "" msgid "Default Supplier ID" msgstr "" -#: part/admin.py:81 part/models.py:872 part/templates/part/part_base.html:177 +#: part/admin.py:81 part/models.py:915 part/templates/part/part_base.html:177 msgid "Variant Of" msgstr "" -#: part/admin.py:84 part/models.py:1000 part/templates/part/part_base.html:203 +#: part/admin.py:84 part/models.py:1043 part/templates/part/part_base.html:203 msgid "Minimum Stock" msgstr "" @@ -5950,160 +5808,164 @@ msgstr "" msgid "Building" msgstr "" -#: part/admin.py:155 part/models.py:3080 part/models.py:3094 +#: part/admin.py:155 part/models.py:3123 part/models.py:3137 #: templates/js/translated/part.js:969 msgid "Minimum Cost" msgstr "" -#: part/admin.py:158 part/models.py:3087 part/models.py:3101 +#: part/admin.py:158 part/models.py:3130 part/models.py:3144 #: 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 +#: part/admin.py:308 part/admin.py:395 stock/admin.py:58 stock/admin.py:211 msgid "Parent ID" msgstr "" -#: part/admin.py:310 part/admin.py:400 stock/admin.py:62 +#: part/admin.py:312 part/admin.py:402 stock/admin.py:62 msgid "Parent Name" msgstr "" -#: part/admin.py:318 part/templates/part/category.html:88 +#: part/admin.py:320 part/templates/part/category.html:88 #: part/templates/part/category.html:101 msgid "Category Path" msgstr "" -#: part/admin.py:323 part/models.py:391 part/serializers.py:117 +#: part/admin.py:325 part/models.py:393 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/js/translated/part.js:2803 templates/js/translated/search.js:130 #: templates/navbar.html:24 users/models.py:203 msgid "Parts" msgstr "Díly" -#: part/admin.py:384 +#: part/admin.py:386 msgid "BOM Level" msgstr "" -#: part/admin.py:387 +#: part/admin.py:389 msgid "BOM Item ID" msgstr "" -#: part/admin.py:397 +#: part/admin.py:399 msgid "Parent IPN" msgstr "" -#: part/admin.py:408 part/models.py:3923 +#: part/admin.py:410 part/models.py:3966 msgid "Part IPN" msgstr "IPN dílu" -#: part/admin.py:421 part/serializers.py:1261 +#: part/admin.py:423 part/serializers.py:1278 #: templates/js/translated/pricing.js:358 #: templates/js/translated/pricing.js:1024 msgid "Minimum Price" msgstr "" -#: part/admin.py:426 part/serializers.py:1276 +#: part/admin.py:428 part/serializers.py:1293 #: templates/js/translated/pricing.js:353 #: templates/js/translated/pricing.js:1032 msgid "Maximum Price" msgstr "" -#: part/api.py:119 +#: part/api.py:110 msgid "Starred" msgstr "" -#: part/api.py:121 +#: part/api.py:112 msgid "Filter by starred categories" msgstr "" -#: part/api.py:138 stock/api.py:284 +#: part/api.py:129 stock/api.py:318 msgid "Depth" msgstr "" -#: part/api.py:138 +#: part/api.py:129 msgid "Filter by category depth" msgstr "" -#: part/api.py:156 stock/api.py:302 +#: part/api.py:147 stock/api.py:336 msgid "Cascade" msgstr "" -#: part/api.py:158 +#: part/api.py:149 msgid "Include sub-categories in filtered results" msgstr "" -#: part/api.py:178 +#: part/api.py:169 msgid "Parent" msgstr "" -#: part/api.py:180 +#: part/api.py:171 msgid "Filter by parent category" msgstr "" -#: part/api.py:213 +#: part/api.py:204 msgid "Exclude Tree" msgstr "" -#: part/api.py:215 +#: part/api.py:206 msgid "Exclude sub-categories under the specified category" msgstr "" -#: part/api.py:461 +#: part/api.py:455 msgid "Has Results" msgstr "" -#: part/api.py:628 +#: part/api.py:622 msgid "Incoming Purchase Order" msgstr "" -#: part/api.py:646 +#: part/api.py:640 msgid "Outgoing Sales Order" msgstr "" -#: part/api.py:662 +#: part/api.py:656 msgid "Stock produced by Build Order" msgstr "" -#: part/api.py:746 +#: part/api.py:740 msgid "Stock required for Build Order" msgstr "" -#: part/api.py:893 +#: part/api.py:887 msgid "Valid" msgstr "" -#: part/api.py:894 +#: part/api.py:888 msgid "Validate entire Bill of Materials" msgstr "" -#: part/api.py:900 +#: part/api.py:894 msgid "This option must be selected" msgstr "" -#: part/api.py:1561 part/models.py:896 part/models.py:3386 part/models.py:3866 -#: part/serializers.py:406 part/serializers.py:1117 -#: part/templates/part/part_base.html:260 stock/api.py:745 +#: part/api.py:1111 +msgid "BOM Valid" +msgstr "" + +#: part/api.py:1515 part/models.py:939 part/models.py:3429 part/models.py:3909 +#: part/serializers.py:406 part/serializers.py:1134 +#: part/templates/part/part_base.html:260 stock/api.py:781 #: templates/InvenTree/settings/settings_staff_js.html:300 #: templates/js/translated/notification.js:60 -#: templates/js/translated/part.js:2377 +#: templates/js/translated/part.js:2376 msgid "Category" msgstr "" -#: part/api.py:1849 +#: part/api.py:1803 msgid "Uses" msgstr "" -#: part/bom.py:170 part/models.py:101 part/models.py:939 +#: part/bom.py:170 part/models.py:102 part/models.py:982 #: part/templates/part/category.html:116 part/templates/part/part_base.html:367 msgid "Default Location" msgstr "" -#: part/bom.py:171 part/serializers.py:822 +#: part/bom.py:171 part/serializers.py:837 #: templates/email/low_stock_notification.html:16 msgid "Total Stock" msgstr "" @@ -6112,698 +5974,712 @@ msgstr "" msgid "Input quantity for price calculation" msgstr "" -#: part/models.py:82 part/models.py:3867 part/templates/part/category.html:16 +#: part/models.py:83 part/models.py:3910 part/templates/part/category.html:16 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "Kategorie dílu" -#: part/models.py:83 part/templates/part/category.html:136 +#: part/models.py:84 part/templates/part/category.html:136 #: templates/InvenTree/search.html:97 templates/js/translated/search.js:158 #: users/models.py:202 msgid "Part Categories" msgstr "Kategorie dílů" -#: part/models.py:102 +#: part/models.py:103 msgid "Default location for parts in this category" msgstr "Výchozí umístění dílů v této kategorii" -#: part/models.py:107 stock/models.py:165 templates/js/translated/part.js:2810 +#: part/models.py:108 stock/models.py:173 templates/js/translated/part.js:2809 #: 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:109 +#: part/models.py:110 msgid "Parts may not be directly assigned to a structural category, but may be assigned to child categories." msgstr "Díly nesmějí být přímo zařazeny do strukturované kategorie, ale mohou být zařazeny jako podkategorie." -#: part/models.py:118 +#: part/models.py:119 msgid "Default keywords" msgstr "" -#: part/models.py:119 +#: part/models.py:120 msgid "Default keywords for parts in this category" msgstr "Výchozí klíčová slova pro díly v této kategorii" -#: part/models.py:125 stock/models.py:89 stock/models.py:148 +#: part/models.py:126 stock/models.py:85 stock/models.py:156 #: templates/InvenTree/settings/settings_staff_js.html:456 msgid "Icon" msgstr "" -#: part/models.py:126 stock/models.py:149 +#: part/models.py:127 stock/models.py:157 msgid "Icon (optional)" msgstr "" -#: part/models.py:148 +#: part/models.py:149 msgid "You cannot make this part category structural because some parts are already assigned to it!" msgstr "" -#: part/models.py:484 +#: part/models.py:482 +msgid "Cannot delete this part as it is still active" +msgstr "" + +#: part/models.py:489 +msgid "Cannot delete this part as it is used in an assembly" +msgstr "" + +#: part/models.py:527 msgid "Invalid choice for parent part" msgstr "" -#: part/models.py:532 part/models.py:539 +#: part/models.py:575 part/models.py:582 #, python-brace-format msgid "Part '{self}' cannot be used in BOM for '{parent}' (recursive)" msgstr "" -#: part/models.py:551 +#: part/models.py:594 #, python-brace-format msgid "Part '{parent}' is used in BOM for '{self}' (recursive)" msgstr "" -#: part/models.py:616 +#: part/models.py:659 #, python-brace-format msgid "IPN must match regex pattern {pattern}" msgstr "" -#: part/models.py:696 +#: part/models.py:739 msgid "Stock item with this serial number already exists" msgstr "" -#: part/models.py:801 +#: part/models.py:844 msgid "Duplicate IPN not allowed in part settings" msgstr "" -#: part/models.py:811 +#: part/models.py:854 msgid "Part with this Name, IPN and Revision already exists." msgstr "" -#: part/models.py:826 +#: part/models.py:869 msgid "Parts cannot be assigned to structural part categories!" msgstr "" -#: part/models.py:855 part/models.py:3922 +#: part/models.py:898 part/models.py:3965 msgid "Part name" msgstr "Název dílu" -#: part/models.py:860 +#: part/models.py:903 msgid "Is Template" msgstr "" -#: part/models.py:861 +#: part/models.py:904 msgid "Is this part a template part?" msgstr "" -#: part/models.py:871 +#: part/models.py:914 msgid "Is this part a variant of another part?" msgstr "" -#: part/models.py:879 +#: part/models.py:922 msgid "Part description (optional)" msgstr "" -#: part/models.py:887 +#: part/models.py:930 msgid "Part keywords to improve visibility in search results" msgstr "" -#: part/models.py:897 +#: part/models.py:940 msgid "Part category" msgstr "Kategorie dílu" -#: part/models.py:905 +#: part/models.py:948 msgid "Internal Part Number" msgstr "Interní číslo dílu" -#: part/models.py:912 +#: part/models.py:955 msgid "Part revision or version number" msgstr "" -#: part/models.py:937 +#: part/models.py:980 msgid "Where is this item normally stored?" msgstr "" -#: part/models.py:983 part/templates/part/part_base.html:376 +#: part/models.py:1026 part/templates/part/part_base.html:376 msgid "Default Supplier" msgstr "" -#: part/models.py:984 +#: part/models.py:1027 msgid "Default supplier part" msgstr "" -#: part/models.py:991 +#: part/models.py:1034 msgid "Default Expiry" msgstr "" -#: part/models.py:992 +#: part/models.py:1035 msgid "Expiry time (in days) for stock items of this part" msgstr "" -#: part/models.py:1001 +#: part/models.py:1044 msgid "Minimum allowed stock level" msgstr "" -#: part/models.py:1010 +#: part/models.py:1053 msgid "Units of measure for this part" msgstr "" -#: part/models.py:1017 +#: part/models.py:1060 msgid "Can this part be built from other parts?" msgstr "" -#: part/models.py:1023 +#: part/models.py:1066 msgid "Can this part be used to build other parts?" msgstr "" -#: part/models.py:1029 +#: part/models.py:1072 msgid "Does this part have tracking for unique items?" msgstr "" -#: part/models.py:1035 +#: part/models.py:1078 msgid "Can this part be purchased from external suppliers?" msgstr "" -#: part/models.py:1041 +#: part/models.py:1084 msgid "Can this part be sold to customers?" msgstr "" -#: part/models.py:1045 +#: part/models.py:1088 msgid "Is this part active?" msgstr "" -#: part/models.py:1051 +#: part/models.py:1094 msgid "Is this a virtual part, such as a software product or license?" msgstr "" -#: part/models.py:1057 +#: part/models.py:1100 msgid "BOM checksum" msgstr "" -#: part/models.py:1058 +#: part/models.py:1101 msgid "Stored BOM checksum" msgstr "" -#: part/models.py:1066 +#: part/models.py:1109 msgid "BOM checked by" msgstr "" -#: part/models.py:1071 +#: part/models.py:1114 msgid "BOM checked date" msgstr "" -#: part/models.py:1087 +#: part/models.py:1130 msgid "Creation User" msgstr "" -#: part/models.py:1097 +#: part/models.py:1140 msgid "Owner responsible for this part" msgstr "" -#: part/models.py:1102 part/templates/part/part_base.html:339 +#: part/models.py:1145 part/templates/part/part_base.html:339 #: stock/templates/stock/item_base.html:451 -#: templates/js/translated/part.js:2471 +#: templates/js/translated/part.js:2470 msgid "Last Stocktake" msgstr "" -#: part/models.py:1975 +#: part/models.py:2018 msgid "Sell multiple" msgstr "" -#: part/models.py:2994 +#: part/models.py:3037 msgid "Currency used to cache pricing calculations" msgstr "" -#: part/models.py:3010 +#: part/models.py:3053 msgid "Minimum BOM Cost" msgstr "" -#: part/models.py:3011 +#: part/models.py:3054 msgid "Minimum cost of component parts" msgstr "" -#: part/models.py:3017 +#: part/models.py:3060 msgid "Maximum BOM Cost" msgstr "" -#: part/models.py:3018 +#: part/models.py:3061 msgid "Maximum cost of component parts" msgstr "" -#: part/models.py:3024 +#: part/models.py:3067 msgid "Minimum Purchase Cost" msgstr "" -#: part/models.py:3025 +#: part/models.py:3068 msgid "Minimum historical purchase cost" msgstr "" -#: part/models.py:3031 +#: part/models.py:3074 msgid "Maximum Purchase Cost" msgstr "" -#: part/models.py:3032 +#: part/models.py:3075 msgid "Maximum historical purchase cost" msgstr "" -#: part/models.py:3038 +#: part/models.py:3081 msgid "Minimum Internal Price" msgstr "" -#: part/models.py:3039 +#: part/models.py:3082 msgid "Minimum cost based on internal price breaks" msgstr "" -#: part/models.py:3045 +#: part/models.py:3088 msgid "Maximum Internal Price" msgstr "" -#: part/models.py:3046 +#: part/models.py:3089 msgid "Maximum cost based on internal price breaks" msgstr "" -#: part/models.py:3052 +#: part/models.py:3095 msgid "Minimum Supplier Price" msgstr "" -#: part/models.py:3053 +#: part/models.py:3096 msgid "Minimum price of part from external suppliers" msgstr "" -#: part/models.py:3059 +#: part/models.py:3102 msgid "Maximum Supplier Price" msgstr "" -#: part/models.py:3060 +#: part/models.py:3103 msgid "Maximum price of part from external suppliers" msgstr "" -#: part/models.py:3066 +#: part/models.py:3109 msgid "Minimum Variant Cost" msgstr "" -#: part/models.py:3067 +#: part/models.py:3110 msgid "Calculated minimum cost of variant parts" msgstr "" -#: part/models.py:3073 +#: part/models.py:3116 msgid "Maximum Variant Cost" msgstr "" -#: part/models.py:3074 +#: part/models.py:3117 msgid "Calculated maximum cost of variant parts" msgstr "" -#: part/models.py:3081 +#: part/models.py:3124 msgid "Override minimum cost" msgstr "" -#: part/models.py:3088 +#: part/models.py:3131 msgid "Override maximum cost" msgstr "" -#: part/models.py:3095 +#: part/models.py:3138 msgid "Calculated overall minimum cost" msgstr "" -#: part/models.py:3102 +#: part/models.py:3145 msgid "Calculated overall maximum cost" msgstr "" -#: part/models.py:3108 +#: part/models.py:3151 msgid "Minimum Sale Price" msgstr "" -#: part/models.py:3109 +#: part/models.py:3152 msgid "Minimum sale price based on price breaks" msgstr "" -#: part/models.py:3115 +#: part/models.py:3158 msgid "Maximum Sale Price" msgstr "" -#: part/models.py:3116 +#: part/models.py:3159 msgid "Maximum sale price based on price breaks" msgstr "" -#: part/models.py:3122 +#: part/models.py:3165 msgid "Minimum Sale Cost" msgstr "" -#: part/models.py:3123 +#: part/models.py:3166 msgid "Minimum historical sale price" msgstr "" -#: part/models.py:3129 +#: part/models.py:3172 msgid "Maximum Sale Cost" msgstr "" -#: part/models.py:3130 +#: part/models.py:3173 msgid "Maximum historical sale price" msgstr "" -#: part/models.py:3149 +#: part/models.py:3192 msgid "Part for stocktake" msgstr "" -#: part/models.py:3154 +#: part/models.py:3197 msgid "Item Count" msgstr "" -#: part/models.py:3155 +#: part/models.py:3198 msgid "Number of individual stock entries at time of stocktake" msgstr "" -#: part/models.py:3163 +#: part/models.py:3206 msgid "Total available stock at time of stocktake" msgstr "" -#: part/models.py:3167 part/models.py:3250 +#: part/models.py:3210 part/models.py:3293 #: part/templates/part/part_scheduling.html:13 -#: report/templates/report/inventree_test_report_base.html:106 +#: report/templates/report/inventree_test_report.html:106 #: templates/InvenTree/settings/plugin_settings.html:37 #: templates/InvenTree/settings/settings_staff_js.html:540 #: templates/js/translated/part.js:1085 templates/js/translated/pricing.js:826 #: templates/js/translated/pricing.js:950 -#: templates/js/translated/purchase_order.js:1732 +#: templates/js/translated/purchase_order.js:1731 #: templates/js/translated/stock.js:2821 msgid "Date" msgstr "" -#: part/models.py:3168 +#: part/models.py:3211 msgid "Date stocktake was performed" msgstr "" -#: part/models.py:3176 +#: part/models.py:3219 msgid "Additional notes" msgstr "" -#: part/models.py:3186 +#: part/models.py:3229 msgid "User who performed this stocktake" msgstr "" -#: part/models.py:3192 +#: part/models.py:3235 msgid "Minimum Stock Cost" msgstr "" -#: part/models.py:3193 +#: part/models.py:3236 msgid "Estimated minimum cost of stock on hand" msgstr "" -#: part/models.py:3199 +#: part/models.py:3242 msgid "Maximum Stock Cost" msgstr "" -#: part/models.py:3200 +#: part/models.py:3243 msgid "Estimated maximum cost of stock on hand" msgstr "" -#: part/models.py:3256 templates/InvenTree/settings/settings_staff_js.html:529 +#: part/models.py:3299 templates/InvenTree/settings/settings_staff_js.html:529 msgid "Report" msgstr "" -#: part/models.py:3257 +#: part/models.py:3300 msgid "Stocktake report file (generated internally)" msgstr "" -#: part/models.py:3262 templates/InvenTree/settings/settings_staff_js.html:536 +#: part/models.py:3305 templates/InvenTree/settings/settings_staff_js.html:536 msgid "Part Count" msgstr "" -#: part/models.py:3263 +#: part/models.py:3306 msgid "Number of parts covered by stocktake" msgstr "" -#: part/models.py:3273 +#: part/models.py:3316 msgid "User who requested this stocktake report" msgstr "" -#: part/models.py:3435 +#: part/models.py:3478 msgid "Invalid template name - must include at least one alphanumeric character" msgstr "" -#: part/models.py:3446 +#: part/models.py:3489 msgid "Test templates can only be created for trackable parts" msgstr "" -#: part/models.py:3457 +#: part/models.py:3500 msgid "Test template with the same key already exists for part" msgstr "" -#: part/models.py:3474 templates/js/translated/part.js:2879 +#: part/models.py:3517 templates/js/translated/part.js:2878 msgid "Test Name" msgstr "" -#: part/models.py:3475 +#: part/models.py:3518 msgid "Enter a name for the test" msgstr "" -#: part/models.py:3481 +#: part/models.py:3524 msgid "Test Key" msgstr "" -#: part/models.py:3482 +#: part/models.py:3525 msgid "Simplified key for the test" msgstr "" -#: part/models.py:3489 +#: part/models.py:3532 msgid "Test Description" msgstr "" -#: part/models.py:3490 +#: part/models.py:3533 msgid "Enter description for this test" msgstr "" -#: part/models.py:3494 +#: part/models.py:3537 report/models.py:208 +#: templates/js/translated/part.js:2899 +#: templates/js/translated/table_filters.js:481 +msgid "Enabled" +msgstr "" + +#: part/models.py:3537 msgid "Is this test enabled?" msgstr "" -#: part/models.py:3499 templates/js/translated/part.js:2908 +#: part/models.py:3542 templates/js/translated/part.js:2907 #: templates/js/translated/table_filters.js:477 msgid "Required" msgstr "" -#: part/models.py:3500 +#: part/models.py:3543 msgid "Is this test required to pass?" msgstr "" -#: part/models.py:3505 templates/js/translated/part.js:2916 +#: part/models.py:3548 templates/js/translated/part.js:2915 msgid "Requires Value" msgstr "" -#: part/models.py:3506 +#: part/models.py:3549 msgid "Does this test require a value when adding a test result?" msgstr "" -#: part/models.py:3511 templates/js/translated/part.js:2923 +#: part/models.py:3554 templates/js/translated/part.js:2922 msgid "Requires Attachment" msgstr "" -#: part/models.py:3513 +#: part/models.py:3556 msgid "Does this test require a file attachment when adding a test result?" msgstr "" -#: part/models.py:3560 +#: part/models.py:3603 msgid "Checkbox parameters cannot have units" msgstr "" -#: part/models.py:3565 +#: part/models.py:3608 msgid "Checkbox parameters cannot have choices" msgstr "" -#: part/models.py:3585 +#: part/models.py:3628 msgid "Choices must be unique" msgstr "" -#: part/models.py:3602 +#: part/models.py:3645 msgid "Parameter template name must be unique" msgstr "" -#: part/models.py:3617 +#: part/models.py:3660 msgid "Parameter Name" msgstr "" -#: part/models.py:3624 +#: part/models.py:3667 msgid "Physical units for this parameter" msgstr "" -#: part/models.py:3632 +#: part/models.py:3675 msgid "Parameter description" msgstr "" -#: part/models.py:3638 templates/js/translated/part.js:1627 +#: part/models.py:3681 templates/js/translated/part.js:1627 #: templates/js/translated/table_filters.js:825 msgid "Checkbox" msgstr "" -#: part/models.py:3639 +#: part/models.py:3682 msgid "Is this parameter a checkbox?" msgstr "" -#: part/models.py:3644 templates/js/translated/part.js:1636 +#: part/models.py:3687 templates/js/translated/part.js:1636 msgid "Choices" msgstr "" -#: part/models.py:3645 +#: part/models.py:3688 msgid "Valid choices for this parameter (comma-separated)" msgstr "" -#: part/models.py:3722 +#: part/models.py:3765 msgid "Invalid choice for parameter value" msgstr "" -#: part/models.py:3765 +#: part/models.py:3808 msgid "Parent Part" msgstr "" -#: part/models.py:3773 part/models.py:3874 part/models.py:3875 +#: part/models.py:3816 part/models.py:3917 part/models.py:3918 #: templates/InvenTree/settings/settings_staff_js.html:295 msgid "Parameter Template" msgstr "" -#: part/models.py:3778 +#: part/models.py:3821 msgid "Data" msgstr "" -#: part/models.py:3779 +#: part/models.py:3822 msgid "Parameter Value" msgstr "" -#: part/models.py:3881 templates/InvenTree/settings/settings_staff_js.html:304 +#: part/models.py:3924 templates/InvenTree/settings/settings_staff_js.html:304 msgid "Default Value" msgstr "" -#: part/models.py:3882 +#: part/models.py:3925 msgid "Default Parameter Value" msgstr "" -#: part/models.py:3920 +#: part/models.py:3963 msgid "Part ID or part name" msgstr "ID dílu nebo název dílu" -#: part/models.py:3921 +#: part/models.py:3964 msgid "Unique part ID value" msgstr "Jedinečná hodnota ID dílu" -#: part/models.py:3923 +#: part/models.py:3966 msgid "Part IPN value" msgstr "Hodnota IPN dílu" -#: part/models.py:3924 +#: part/models.py:3967 msgid "Level" msgstr "" -#: part/models.py:3924 +#: part/models.py:3967 msgid "BOM level" msgstr "" -#: part/models.py:4014 +#: part/models.py:4057 msgid "Select parent part" msgstr "Vyberte nadřazený díl" -#: part/models.py:4024 +#: part/models.py:4067 msgid "Sub part" msgstr "" -#: part/models.py:4025 +#: part/models.py:4068 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:4036 +#: part/models.py:4079 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:4042 +#: part/models.py:4085 msgid "This BOM item is optional" msgstr "" -#: part/models.py:4048 +#: part/models.py:4091 msgid "This BOM item is consumable (it is not tracked in build orders)" msgstr "" -#: part/models.py:4055 part/templates/part/upload_bom.html:55 +#: part/models.py:4098 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "" -#: part/models.py:4056 +#: part/models.py:4099 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:4063 +#: part/models.py:4106 msgid "BOM item reference" msgstr "" -#: part/models.py:4071 +#: part/models.py:4114 msgid "BOM item notes" msgstr "" -#: part/models.py:4077 +#: part/models.py:4120 msgid "Checksum" msgstr "" -#: part/models.py:4078 +#: part/models.py:4121 msgid "BOM line checksum" msgstr "" -#: part/models.py:4083 templates/js/translated/table_filters.js:174 +#: part/models.py:4126 templates/js/translated/table_filters.js:174 msgid "Validated" msgstr "" -#: part/models.py:4084 +#: part/models.py:4127 msgid "This BOM item has been validated" msgstr "" -#: part/models.py:4089 part/templates/part/upload_bom.html:57 +#: part/models.py:4132 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:4090 +#: part/models.py:4133 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "" -#: part/models.py:4095 part/templates/part/upload_bom.html:56 +#: part/models.py:4138 part/templates/part/upload_bom.html:56 #: templates/js/translated/bom.js:1046 msgid "Allow Variants" msgstr "" -#: part/models.py:4096 +#: part/models.py:4139 msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:4181 stock/models.py:647 +#: part/models.py:4224 stock/models.py:664 msgid "Quantity must be integer value for trackable parts" msgstr "" -#: part/models.py:4191 part/models.py:4193 +#: part/models.py:4234 part/models.py:4236 msgid "Sub part must be specified" msgstr "" -#: part/models.py:4333 +#: part/models.py:4376 msgid "BOM Item Substitute" msgstr "" -#: part/models.py:4354 +#: part/models.py:4397 msgid "Substitute part cannot be the same as the master part" msgstr "" -#: part/models.py:4367 +#: part/models.py:4410 msgid "Parent BOM item" msgstr "" -#: part/models.py:4375 +#: part/models.py:4418 msgid "Substitute part" msgstr "" -#: part/models.py:4391 +#: part/models.py:4434 msgid "Part 1" msgstr "" -#: part/models.py:4399 +#: part/models.py:4442 msgid "Part 2" msgstr "" -#: part/models.py:4400 +#: part/models.py:4443 msgid "Select Related Part" msgstr "" -#: part/models.py:4419 +#: part/models.py:4462 msgid "Part relationship cannot be created between a part and itself" msgstr "" -#: part/models.py:4424 +#: part/models.py:4467 msgid "Duplicate relationship already exists" msgstr "" @@ -6821,7 +6697,7 @@ msgstr "" msgid "Number of results recorded against this template" msgstr "" -#: part/serializers.py:210 part/serializers.py:228 stock/serializers.py:406 +#: part/serializers.py:210 part/serializers.py:228 stock/serializers.py:535 msgid "Purchase currency of this stock item" msgstr "" @@ -6837,299 +6713,299 @@ msgstr "" msgid "Select category" msgstr "" -#: part/serializers.py:437 +#: part/serializers.py:442 msgid "Original Part" msgstr "" -#: part/serializers.py:438 +#: part/serializers.py:443 msgid "Select original part to duplicate" msgstr "" -#: part/serializers.py:443 +#: part/serializers.py:448 msgid "Copy Image" msgstr "" -#: part/serializers.py:444 +#: part/serializers.py:449 msgid "Copy image from original part" msgstr "" -#: part/serializers.py:450 part/templates/part/detail.html:277 +#: part/serializers.py:455 part/templates/part/detail.html:277 msgid "Copy BOM" msgstr "" -#: part/serializers.py:451 +#: part/serializers.py:456 msgid "Copy bill of materials from original part" msgstr "" -#: part/serializers.py:457 +#: part/serializers.py:462 msgid "Copy Parameters" msgstr "" -#: part/serializers.py:458 +#: part/serializers.py:463 msgid "Copy parameter data from original part" msgstr "" -#: part/serializers.py:464 +#: part/serializers.py:469 msgid "Copy Notes" msgstr "" -#: part/serializers.py:465 +#: part/serializers.py:470 msgid "Copy notes from original part" msgstr "" -#: part/serializers.py:478 +#: part/serializers.py:488 msgid "Initial Stock Quantity" msgstr "" -#: part/serializers.py:480 +#: part/serializers.py:490 msgid "Specify initial stock quantity for this Part. If quantity is zero, no stock is added." msgstr "" -#: part/serializers.py:487 +#: part/serializers.py:497 msgid "Initial Stock Location" msgstr "" -#: part/serializers.py:488 +#: part/serializers.py:498 msgid "Specify initial stock location for this Part" msgstr "" -#: part/serializers.py:500 +#: part/serializers.py:515 msgid "Select supplier (or leave blank to skip)" msgstr "" -#: part/serializers.py:516 +#: part/serializers.py:531 msgid "Select manufacturer (or leave blank to skip)" msgstr "" -#: part/serializers.py:526 +#: part/serializers.py:541 msgid "Manufacturer part number" msgstr "" -#: part/serializers.py:533 +#: part/serializers.py:548 msgid "Selected company is not a valid supplier" msgstr "" -#: part/serializers.py:542 +#: part/serializers.py:557 msgid "Selected company is not a valid manufacturer" msgstr "" -#: part/serializers.py:553 +#: part/serializers.py:568 msgid "Manufacturer part matching this MPN already exists" msgstr "" -#: part/serializers.py:560 +#: part/serializers.py:575 msgid "Supplier part matching this SKU already exists" msgstr "" -#: part/serializers.py:823 +#: part/serializers.py:838 msgid "External Stock" msgstr "" -#: part/serializers.py:825 +#: part/serializers.py:840 msgid "Unallocated Stock" msgstr "" -#: part/serializers.py:828 +#: part/serializers.py:843 msgid "Variant Stock" msgstr "" -#: part/serializers.py:856 part/templates/part/copy_part.html:9 +#: part/serializers.py:873 part/templates/part/copy_part.html:9 #: templates/js/translated/part.js:471 msgid "Duplicate Part" msgstr "" -#: part/serializers.py:857 +#: part/serializers.py:874 msgid "Copy initial data from another Part" msgstr "" -#: part/serializers.py:863 templates/js/translated/part.js:102 +#: part/serializers.py:880 templates/js/translated/part.js:102 msgid "Initial Stock" msgstr "" -#: part/serializers.py:864 +#: part/serializers.py:881 msgid "Create Part with initial stock quantity" msgstr "" -#: part/serializers.py:870 +#: part/serializers.py:887 msgid "Supplier Information" msgstr "" -#: part/serializers.py:871 +#: part/serializers.py:888 msgid "Add initial supplier information for this part" msgstr "" -#: part/serializers.py:879 +#: part/serializers.py:896 msgid "Copy Category Parameters" msgstr "" -#: part/serializers.py:880 +#: part/serializers.py:897 msgid "Copy parameter templates from selected part category" msgstr "" -#: part/serializers.py:885 +#: part/serializers.py:902 msgid "Existing Image" msgstr "" -#: part/serializers.py:886 +#: part/serializers.py:903 msgid "Filename of an existing part image" msgstr "" -#: part/serializers.py:903 +#: part/serializers.py:920 msgid "Image file does not exist" msgstr "" -#: part/serializers.py:1109 +#: part/serializers.py:1126 msgid "Limit stocktake report to a particular part, and any variant parts" msgstr "" -#: part/serializers.py:1119 +#: part/serializers.py:1136 msgid "Limit stocktake report to a particular part category, and any child categories" msgstr "" -#: part/serializers.py:1129 +#: part/serializers.py:1146 msgid "Limit stocktake report to a particular stock location, and any child locations" msgstr "" -#: part/serializers.py:1135 +#: part/serializers.py:1152 msgid "Exclude External Stock" msgstr "" -#: part/serializers.py:1136 +#: part/serializers.py:1153 msgid "Exclude stock items in external locations" msgstr "" -#: part/serializers.py:1141 +#: part/serializers.py:1158 msgid "Generate Report" msgstr "" -#: part/serializers.py:1142 +#: part/serializers.py:1159 msgid "Generate report file containing calculated stocktake data" msgstr "" -#: part/serializers.py:1147 +#: part/serializers.py:1164 msgid "Update Parts" msgstr "Aktualizovat díly" -#: part/serializers.py:1148 +#: part/serializers.py:1165 msgid "Update specified parts with calculated stocktake data" msgstr "" -#: part/serializers.py:1156 +#: part/serializers.py:1173 msgid "Stocktake functionality is not enabled" msgstr "" -#: part/serializers.py:1262 +#: part/serializers.py:1279 msgid "Override calculated value for minimum price" msgstr "" -#: part/serializers.py:1269 +#: part/serializers.py:1286 msgid "Minimum price currency" msgstr "" -#: part/serializers.py:1277 +#: part/serializers.py:1294 msgid "Override calculated value for maximum price" msgstr "" -#: part/serializers.py:1284 +#: part/serializers.py:1301 msgid "Maximum price currency" msgstr "" -#: part/serializers.py:1313 +#: part/serializers.py:1330 msgid "Update" msgstr "" -#: part/serializers.py:1314 +#: part/serializers.py:1331 msgid "Update pricing for this part" msgstr "Aktualizovat cenu pro díl" -#: part/serializers.py:1337 +#: part/serializers.py:1354 #, python-brace-format msgid "Could not convert from provided currencies to {default_currency}" msgstr "" -#: part/serializers.py:1344 +#: part/serializers.py:1361 msgid "Minimum price must not be greater than maximum price" msgstr "" -#: part/serializers.py:1347 +#: part/serializers.py:1364 msgid "Maximum price must not be less than minimum price" msgstr "" -#: part/serializers.py:1714 +#: part/serializers.py:1731 msgid "Select part to copy BOM from" msgstr "" -#: part/serializers.py:1722 +#: part/serializers.py:1739 msgid "Remove Existing Data" msgstr "" -#: part/serializers.py:1723 +#: part/serializers.py:1740 msgid "Remove existing BOM items before copying" msgstr "" -#: part/serializers.py:1728 +#: part/serializers.py:1745 msgid "Include Inherited" msgstr "" -#: part/serializers.py:1729 +#: part/serializers.py:1746 msgid "Include BOM items which are inherited from templated parts" msgstr "" -#: part/serializers.py:1734 +#: part/serializers.py:1751 msgid "Skip Invalid Rows" msgstr "" -#: part/serializers.py:1735 +#: part/serializers.py:1752 msgid "Enable this option to skip invalid rows" msgstr "" -#: part/serializers.py:1740 +#: part/serializers.py:1757 msgid "Copy Substitute Parts" msgstr "" -#: part/serializers.py:1741 +#: part/serializers.py:1758 msgid "Copy substitute parts when duplicate BOM items" msgstr "" -#: part/serializers.py:1775 +#: part/serializers.py:1792 msgid "Clear Existing BOM" msgstr "" -#: part/serializers.py:1776 +#: part/serializers.py:1793 msgid "Delete existing BOM items before uploading" msgstr "" -#: part/serializers.py:1806 +#: part/serializers.py:1823 msgid "No part column specified" msgstr "" -#: part/serializers.py:1850 +#: part/serializers.py:1867 msgid "Multiple matching parts found" msgstr "" -#: part/serializers.py:1853 +#: part/serializers.py:1870 msgid "No matching part found" msgstr "" -#: part/serializers.py:1856 +#: part/serializers.py:1873 msgid "Part is not designated as a component" msgstr "" -#: part/serializers.py:1865 +#: part/serializers.py:1882 msgid "Quantity not provided" msgstr "" -#: part/serializers.py:1873 +#: part/serializers.py:1890 msgid "Invalid quantity" msgstr "" -#: part/serializers.py:1894 +#: part/serializers.py:1911 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 +#: templates/js/translated/purchase_order.js:2084 msgid "Total Quantity" msgstr "" @@ -7281,7 +7157,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:2215 users/models.py:204 +#: templates/js/translated/stock.js:2216 users/models.py:204 msgid "Stocktake" msgstr "" @@ -7379,15 +7255,15 @@ msgstr "" msgid "Part Manufacturers" msgstr "" -#: part/templates/part/detail.html:659 +#: part/templates/part/detail.html:655 msgid "Related Part" msgstr "" -#: part/templates/part/detail.html:667 +#: part/templates/part/detail.html:663 msgid "Add Related Part" msgstr "" -#: part/templates/part/detail.html:752 +#: part/templates/part/detail.html:748 msgid "Add Test Result Template" msgstr "" @@ -7446,7 +7322,7 @@ msgstr "" #: part/templates/part/part_base.html:52 #: stock/templates/stock/item_base.html:62 -#: stock/templates/stock/location.html:74 +#: stock/templates/stock/location.html:74 templates/js/translated/label.js:143 msgid "Print Label" msgstr "" @@ -7468,7 +7344,7 @@ msgstr "" msgid "Transfer part stock" msgstr "" -#: part/templates/part/part_base.html:91 templates/js/translated/part.js:2293 +#: part/templates/part/part_base.html:91 templates/js/translated/part.js:2292 msgid "Part actions" msgstr "" @@ -7517,7 +7393,7 @@ msgid "Part is virtual (not a physical part)" msgstr "" #: part/templates/part/part_base.html:163 -#: part/templates/part/part_base.html:682 +#: part/templates/part/part_base.html:681 msgid "Show Part Details" msgstr "" @@ -7540,7 +7416,7 @@ msgid "Minimum stock level" msgstr "" #: part/templates/part/part_base.html:322 templates/js/translated/bom.js:1071 -#: templates/js/translated/part.js:1264 templates/js/translated/part.js:2444 +#: templates/js/translated/part.js:1264 templates/js/translated/part.js:2443 #: templates/js/translated/pricing.js:391 #: templates/js/translated/pricing.js:1054 msgid "Price Range" @@ -7563,19 +7439,19 @@ msgstr "" msgid "Link Barcode to Part" msgstr "" -#: part/templates/part/part_base.html:512 +#: part/templates/part/part_base.html:511 msgid "Calculate" msgstr "" -#: part/templates/part/part_base.html:529 +#: part/templates/part/part_base.html:528 msgid "Remove associated image from this part" msgstr "" -#: part/templates/part/part_base.html:580 +#: part/templates/part/part_base.html:579 msgid "No matching images found" msgstr "" -#: part/templates/part/part_base.html:676 +#: part/templates/part/part_base.html:675 msgid "Hide Part Details" msgstr "" @@ -7634,8 +7510,8 @@ msgstr "" #: 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 +#: templates/js/translated/part.js:2391 templates/js/translated/stock.js:1059 +#: templates/js/translated/stock.js:2070 templates/navbar.html:31 msgid "Stock" msgstr "" @@ -7681,7 +7557,7 @@ msgstr "" #: stock/templates/stock/item_base.html:446 #: templates/js/translated/company.js:1703 #: templates/js/translated/company.js:1713 -#: templates/js/translated/stock.js:2245 +#: templates/js/translated/stock.js:2246 msgid "Last Updated" msgstr "" @@ -7753,7 +7629,7 @@ msgid "Update Pricing" msgstr "" #: part/templates/part/stock_count.html:7 -#: templates/js/translated/model_renderers.js:221 +#: templates/js/translated/model_renderers.js:227 #: templates/js/translated/part.js:704 templates/js/translated/part.js:2140 #: templates/js/translated/part.js:2142 msgid "No Stock" @@ -7833,7 +7709,7 @@ msgstr "" msgid "Part Pricing" msgstr "" -#: plugin/api.py:168 +#: plugin/api.py:170 msgid "Plugin cannot be deleted as it is currently active" msgstr "" @@ -7899,8 +7775,8 @@ msgstr "" 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 +#: plugin/base/barcodes/api.py:550 templates/js/translated/build.js:2589 +#: templates/js/translated/sales_order.js:1953 msgid "Insufficient stock available" msgstr "" @@ -7994,20 +7870,20 @@ msgstr "" msgid "Quantity to allocate" msgstr "" -#: plugin/base/label/label.py:39 +#: plugin/base/label/label.py:39 templates/js/translated/label.js:155 msgid "Label printing failed" msgstr "" -#: plugin/base/label/mixins.py:63 +#: plugin/base/label/mixins.py:56 msgid "Error rendering label to PDF" msgstr "" -#: plugin/base/label/mixins.py:76 +#: plugin/base/label/mixins.py:70 msgid "Error rendering label to HTML" msgstr "" -#: plugin/base/label/mixins.py:111 -msgid "Error rendering label to PNG" +#: plugin/base/label/mixins.py:151 +msgid "No items provided to print" msgstr "" #: plugin/builtin/barcodes/inventree_barcode.py:25 @@ -8021,7 +7897,7 @@ 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_label.py:22 #: plugin/builtin/labels/inventree_machine.py:64 #: plugin/builtin/labels/label_sheet.py:63 #: plugin/builtin/suppliers/digikey.py:19 plugin/builtin/suppliers/lcsc.py:21 @@ -8075,19 +7951,19 @@ msgstr "" msgid "Default currency exchange integration" msgstr "" -#: plugin/builtin/labels/inventree_label.py:20 +#: plugin/builtin/labels/inventree_label.py:19 msgid "InvenTree PDF label printer" msgstr "" -#: plugin/builtin/labels/inventree_label.py:21 +#: plugin/builtin/labels/inventree_label.py:20 msgid "Provides native support for printing PDF labels" msgstr "" -#: plugin/builtin/labels/inventree_label.py:29 +#: plugin/builtin/labels/inventree_label.py:28 msgid "Debug mode" msgstr "" -#: plugin/builtin/labels/inventree_label.py:30 +#: plugin/builtin/labels/inventree_label.py:29 msgid "Enable debug mode - returns raw HTML instead of PDF" msgstr "" @@ -8099,11 +7975,11 @@ msgstr "" msgid "Provides support for printing using a machine" msgstr "" -#: plugin/builtin/labels/inventree_machine.py:150 +#: plugin/builtin/labels/inventree_machine.py:151 msgid "last used" msgstr "" -#: plugin/builtin/labels/inventree_machine.py:167 +#: plugin/builtin/labels/inventree_machine.py:168 msgid "Options" msgstr "" @@ -8127,7 +8003,7 @@ msgstr "" msgid "Print a border around each label" msgstr "" -#: plugin/builtin/labels/label_sheet.py:47 report/models.py:209 +#: plugin/builtin/labels/label_sheet.py:47 report/models.py:307 msgid "Landscape" msgstr "" @@ -8143,11 +8019,11 @@ msgstr "" msgid "Arrays multiple labels onto a single sheet" msgstr "" -#: plugin/builtin/labels/label_sheet.py:94 +#: plugin/builtin/labels/label_sheet.py:99 msgid "Label is too large for page size" msgstr "" -#: plugin/builtin/labels/label_sheet.py:128 +#: plugin/builtin/labels/label_sheet.py:133 msgid "No labels were generated" msgstr "" @@ -8240,61 +8116,62 @@ msgstr "" msgid "Uninstalled plugin successfully" msgstr "" -#: plugin/models.py:30 +#: plugin/models.py:35 msgid "Plugin Configuration" msgstr "" -#: plugin/models.py:31 +#: plugin/models.py:36 msgid "Plugin Configurations" msgstr "" -#: plugin/models.py:34 users/models.py:100 +#: plugin/models.py:42 users/models.py:100 msgid "Key" msgstr "" -#: plugin/models.py:34 +#: plugin/models.py:43 msgid "Key of plugin" msgstr "" -#: plugin/models.py:42 +#: plugin/models.py:51 msgid "PluginName of the plugin" msgstr "" -#: plugin/models.py:49 plugin/serializers.py:90 +#: plugin/models.py:58 plugin/serializers.py:90 msgid "Package Name" msgstr "" -#: plugin/models.py:51 +#: plugin/models.py:60 msgid "Name of the installed package, if the plugin was installed via PIP" msgstr "" -#: plugin/models.py:56 +#: plugin/models.py:65 msgid "Is the plugin active" msgstr "" -#: plugin/models.py:147 templates/js/translated/table_filters.js:370 +#: plugin/models.py:156 templates/js/translated/table_filters.js:370 #: templates/js/translated/table_filters.js:504 msgid "Installed" msgstr "" -#: plugin/models.py:156 +#: plugin/models.py:165 msgid "Sample plugin" msgstr "" -#: plugin/models.py:164 +#: plugin/models.py:173 msgid "Builtin Plugin" msgstr "" -#: plugin/models.py:172 +#: plugin/models.py:181 msgid "Package Plugin" msgstr "" -#: plugin/models.py:196 templates/InvenTree/settings/plugin_settings.html:9 +#: plugin/models.py:205 report/models.py:474 +#: templates/InvenTree/settings/plugin_settings.html:9 #: templates/js/translated/plugin.js:51 msgid "Plugin" msgstr "" -#: plugin/models.py:243 +#: plugin/models.py:252 msgid "Method" msgstr "" @@ -8302,17 +8179,17 @@ msgstr "" msgid "No author found" msgstr "" -#: plugin/registry.py:588 +#: plugin/registry.py:597 #, python-brace-format msgid "Plugin '{p}' is not compatible with the current InvenTree version {v}" msgstr "" -#: plugin/registry.py:591 +#: plugin/registry.py:600 #, python-brace-format msgid "Plugin requires at least version {v}" msgstr "" -#: plugin/registry.py:593 +#: plugin/registry.py:602 #, python-brace-format msgid "Plugin requires at most version {v}" msgstr "" @@ -8395,279 +8272,363 @@ msgstr "" msgid "Either packagename of URL must be provided" msgstr "" -#: plugin/serializers.py:156 +#: plugin/serializers.py:161 msgid "Full reload" msgstr "" -#: plugin/serializers.py:157 +#: plugin/serializers.py:162 msgid "Perform a full reload of the plugin registry" msgstr "" -#: plugin/serializers.py:163 +#: plugin/serializers.py:168 msgid "Force reload" msgstr "" -#: plugin/serializers.py:165 +#: plugin/serializers.py:170 msgid "Force a reload of the plugin registry, even if it is already loaded" msgstr "" -#: plugin/serializers.py:172 +#: plugin/serializers.py:177 msgid "Collect plugins" msgstr "" -#: plugin/serializers.py:173 +#: plugin/serializers.py:178 msgid "Collect plugins and add them to the registry" msgstr "" -#: plugin/serializers.py:195 +#: plugin/serializers.py:205 msgid "Activate Plugin" msgstr "" -#: plugin/serializers.py:196 +#: plugin/serializers.py:206 msgid "Activate this plugin" msgstr "" -#: plugin/serializers.py:219 +#: plugin/serializers.py:234 msgid "Delete configuration" msgstr "" -#: plugin/serializers.py:220 +#: plugin/serializers.py:235 msgid "Delete the plugin configuration from the database" msgstr "" -#: report/api.py:158 +#: report/api.py:77 msgid "No valid objects provided to template" msgstr "" -#: report/api.py:197 report/api.py:234 +#: report/api.py:89 report/serializers.py:53 +msgid "Model Type" +msgstr "" + +#: report/api.py:92 report/models.py:438 report/serializers.py:98 +#: report/serializers.py:148 templates/js/translated/purchase_order.js:1747 +#: templates/js/translated/return_order.js:353 +#: templates/js/translated/sales_order.js:887 +#: templates/js/translated/sales_order.js:1047 +msgid "Items" +msgstr "" + +#: report/api.py:168 +msgid "Plugin not found" +msgstr "" + +#: report/api.py:170 +msgid "Plugin is not active" +msgstr "" + +#: report/api.py:172 +msgid "Plugin does not support label printing" +msgstr "" + +#: report/api.py:221 +msgid "Invalid label dimensions" +msgstr "" + +#: report/api.py:236 report/api.py:316 +msgid "No valid items provided to template" +msgstr "" + +#: report/api.py:271 +msgid "Error printing label" +msgstr "" + +#: report/api.py:362 report/api.py:398 #, 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 +#: report/helpers.py:41 msgid "A4" msgstr "" -#: report/helpers.py:16 +#: report/helpers.py:42 msgid "A3" msgstr "" -#: report/helpers.py:17 +#: report/helpers.py:43 msgid "Legal" msgstr "" -#: report/helpers.py:18 +#: report/helpers.py:44 msgid "Letter" msgstr "" -#: report/models.py:177 +#: report/models.py:118 +msgid "Template file with this name already exists" +msgstr "" + +#: report/models.py:150 msgid "Template name" msgstr "" -#: report/models.py:183 -msgid "Report template file" +#: report/models.py:156 +msgid "Template description" msgstr "" -#: report/models.py:190 -msgid "Report template description" +#: report/models.py:162 +msgid "Revision number (auto-increments)" msgstr "" -#: report/models.py:196 -msgid "Report revision number (auto-increments)" +#: report/models.py:202 +msgid "Filename Pattern" msgstr "" -#: report/models.py:204 +#: report/models.py:203 +msgid "Pattern for generating filenames" +msgstr "" + +#: report/models.py:208 +msgid "Template is enabled" +msgstr "" + +#: report/models.py:214 +msgid "Target model type for template" +msgstr "" + +#: report/models.py:234 +msgid "Filters" +msgstr "" + +#: report/models.py:235 +msgid "Template query filters (comma-separated list of key=value pairs)" +msgstr "" + +#: report/models.py:294 report/models.py:361 +msgid "Template file" +msgstr "" + +#: report/models.py:302 msgid "Page size for PDF reports" msgstr "" -#: report/models.py:210 +#: report/models.py:308 msgid "Render report in landscape orientation" msgstr "" -#: report/models.py:318 -msgid "Pattern for generating report filenames" +#: report/models.py:367 +msgid "Width [mm]" msgstr "" -#: report/models.py:325 -msgid "Report template is enabled" +#: report/models.py:368 +msgid "Label width, specified in mm" msgstr "" -#: report/models.py:347 -msgid "StockItem query filters (comma-separated list of key=value pairs)" +#: report/models.py:374 +msgid "Height [mm]" msgstr "" -#: report/models.py:354 -msgid "Include Installed Tests" +#: report/models.py:375 +msgid "Label height, specified in mm" msgstr "" -#: report/models.py:356 -msgid "Include test results for stock items installed inside assembled item" +#: report/models.py:438 +msgid "Number of items to process" msgstr "" -#: report/models.py:424 -msgid "Build Filters" +#: report/models.py:444 +msgid "Report generation is complete" msgstr "" -#: report/models.py:425 -msgid "Build query filters (comma-separated list of key=value pairs" +#: report/models.py:448 templates/js/translated/build.js:2177 +msgid "Progress" msgstr "" -#: report/models.py:464 -msgid "Part Filters" +#: report/models.py:448 +msgid "Report generation progress" msgstr "" -#: report/models.py:465 -msgid "Part query filters (comma-separated list of key=value pairs" +#: report/models.py:456 +msgid "Report Template" msgstr "" -#: report/models.py:497 -msgid "Purchase order query filters" +#: report/models.py:463 report/models.py:486 +msgid "Output File" msgstr "" -#: report/models.py:533 -msgid "Sales order query filters" +#: report/models.py:464 report/models.py:487 +msgid "Generated output file" msgstr "" -#: report/models.py:569 -msgid "Return order query filters" +#: report/models.py:475 +msgid "Label output plugin" msgstr "" -#: report/models.py:641 -msgid "Snippet file with this name already exists" +#: report/models.py:479 +msgid "Label Template" msgstr "" -#: report/models.py:648 +#: report/models.py:502 msgid "Snippet" msgstr "" -#: report/models.py:649 +#: report/models.py:503 msgid "Report snippet file" msgstr "" -#: report/models.py:656 +#: report/models.py:510 msgid "Snippet file description" msgstr "" -#: report/models.py:714 -msgid "Asset file with this name already exists" -msgstr "" - -#: report/models.py:722 +#: report/models.py:528 msgid "Asset" msgstr "" -#: report/models.py:723 +#: report/models.py:529 msgid "Report asset file" msgstr "" -#: report/models.py:730 +#: report/models.py:536 msgid "Asset file description" msgstr "" -#: report/models.py:752 -msgid "stock location query filters (comma-separated list of key=value pairs)" +#: report/serializers.py:91 +msgid "Select report template" +msgstr "" + +#: report/serializers.py:99 report/serializers.py:149 +msgid "List of item primary keys to include in the report" +msgstr "" + +#: report/serializers.py:132 +msgid "Select label template" +msgstr "" + +#: report/serializers.py:140 +msgid "Printing Plugin" +msgstr "" + +#: report/serializers.py:141 +msgid "Select plugin to use for label printing" +msgstr "" + +#: report/templates/label/part_label.html:31 +#: report/templates/label/stockitem_qr.html:21 +#: report/templates/label/stocklocation_qr.html:20 +#: templates/allauth_2fa/setup.html:18 +msgid "QR Code" +msgstr "" + +#: report/templates/label/part_label_code128.html:31 +#: report/templates/label/stocklocation_qr_and_text.html:31 +#: templates/qr_code.html:7 +msgid "QR code" msgstr "" #: report/templates/report/inventree_bill_of_materials_report.html:133 msgid "Materials needed" msgstr "" -#: report/templates/report/inventree_build_order_base.html:146 +#: report/templates/report/inventree_build_order_report.html:146 msgid "Required For" msgstr "" -#: report/templates/report/inventree_po_report_base.html:15 +#: report/templates/report/inventree_purchase_order_report.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 +#: report/templates/report/inventree_purchase_order_report.html:30 +#: report/templates/report/inventree_sales_order_report.html:30 #: templates/js/translated/order.js:316 templates/js/translated/pricing.js:527 #: templates/js/translated/pricing.js:596 #: templates/js/translated/pricing.js:834 -#: templates/js/translated/purchase_order.js:2116 -#: templates/js/translated/sales_order.js:1837 +#: templates/js/translated/purchase_order.js:2115 +#: templates/js/translated/sales_order.js:1873 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 +#: report/templates/report/inventree_purchase_order_report.html:55 +#: report/templates/report/inventree_return_order_report.html:48 +#: report/templates/report/inventree_sales_order_report.html:55 msgid "Extra Line Items" msgstr "" -#: report/templates/report/inventree_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 +#: report/templates/report/inventree_purchase_order_report.html:72 +#: report/templates/report/inventree_sales_order_report.html:72 +#: templates/js/translated/purchase_order.js:2017 +#: templates/js/translated/sales_order.js:1842 msgid "Total" msgstr "" -#: report/templates/report/inventree_return_order_report_base.html:25 -#: report/templates/report/inventree_test_report_base.html:88 -#: stock/models.py:809 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 +#: report/templates/report/inventree_return_order_report.html:25 +#: report/templates/report/inventree_test_report.html:88 stock/models.py:826 +#: stock/serializers.py:150 stock/templates/stock/item_base.html:311 +#: templates/js/translated/build.js:519 templates/js/translated/build.js:1367 +#: templates/js/translated/build.js:2355 +#: templates/js/translated/model_renderers.js:230 +#: templates/js/translated/return_order.js:539 +#: templates/js/translated/return_order.js:723 #: templates/js/translated/sales_order.js:315 -#: templates/js/translated/sales_order.js:1611 -#: templates/js/translated/sales_order.js:1696 +#: templates/js/translated/sales_order.js:1647 +#: templates/js/translated/sales_order.js:1732 #: templates/js/translated/stock.js:596 msgid "Serial Number" msgstr "" -#: report/templates/report/inventree_slr_report.html:97 +#: report/templates/report/inventree_stock_location_report.html:97 msgid "Stock location items" msgstr "" -#: report/templates/report/inventree_test_report_base.html:21 +#: report/templates/report/inventree_test_report.html:21 msgid "Stock Item Test Report" msgstr "" -#: report/templates/report/inventree_test_report_base.html:97 +#: report/templates/report/inventree_test_report.html:97 msgid "Test Results" msgstr "" -#: report/templates/report/inventree_test_report_base.html:102 -#: templates/js/translated/stock.js:1492 +#: report/templates/report/inventree_test_report.html:102 +#: templates/js/translated/stock.js:1495 msgid "Test" msgstr "" -#: report/templates/report/inventree_test_report_base.html:103 -#: stock/models.py:2430 +#: report/templates/report/inventree_test_report.html:103 stock/models.py:2423 msgid "Result" msgstr "" -#: report/templates/report/inventree_test_report_base.html:130 +#: report/templates/report/inventree_test_report.html:130 msgid "Pass" msgstr "" -#: report/templates/report/inventree_test_report_base.html:132 +#: report/templates/report/inventree_test_report.html:132 msgid "Fail" msgstr "" -#: report/templates/report/inventree_test_report_base.html:139 +#: report/templates/report/inventree_test_report.html:139 msgid "No result (required)" msgstr "" -#: report/templates/report/inventree_test_report_base.html:141 +#: report/templates/report/inventree_test_report.html:141 msgid "No result" msgstr "" -#: report/templates/report/inventree_test_report_base.html:154 +#: report/templates/report/inventree_test_report.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 +#: report/templates/report/inventree_test_report.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 "" @@ -8724,7 +8685,7 @@ msgstr "" msgid "Customer ID" msgstr "" -#: stock/admin.py:201 stock/models.py:789 +#: stock/admin.py:201 stock/models.py:806 #: stock/templates/stock/item_base.html:354 msgid "Installed In" msgstr "" @@ -8749,555 +8710,723 @@ msgstr "" msgid "Delete on Deplete" msgstr "" -#: stock/admin.py:256 stock/models.py:883 +#: stock/admin.py:256 stock/models.py:900 #: stock/templates/stock/item_base.html:433 -#: templates/js/translated/stock.js:2229 users/models.py:124 +#: templates/js/translated/stock.js:2230 users/models.py:124 msgid "Expiry Date" msgstr "" -#: stock/api.py:284 +#: stock/api.py:318 msgid "Filter by location depth" msgstr "" -#: stock/api.py:304 +#: stock/api.py:338 msgid "Include sub-locations in filtered results" msgstr "" -#: stock/api.py:325 +#: stock/api.py:359 msgid "Parent Location" msgstr "" -#: stock/api.py:326 +#: stock/api.py:360 msgid "Filter by parent location" msgstr "" -#: stock/api.py:579 templates/js/translated/table_filters.js:427 +#: stock/api.py:615 templates/js/translated/table_filters.js:427 msgid "External Location" msgstr "" -#: stock/api.py:767 +#: stock/api.py:803 msgid "Part Tree" msgstr "" -#: stock/api.py:797 +#: stock/api.py:833 msgid "Expiry date before" msgstr "" -#: stock/api.py:801 +#: stock/api.py:837 msgid "Expiry date after" msgstr "" -#: stock/api.py:804 stock/templates/stock/item_base.html:439 +#: stock/api.py:840 stock/templates/stock/item_base.html:439 #: templates/js/translated/table_filters.js:441 msgid "Stale" msgstr "" -#: stock/api.py:891 +#: stock/api.py:927 msgid "Quantity is required" msgstr "" -#: stock/api.py:897 +#: stock/api.py:933 msgid "Valid part must be supplied" msgstr "" -#: stock/api.py:928 +#: stock/api.py:964 msgid "The given supplier part does not exist" msgstr "" -#: stock/api.py:938 +#: stock/api.py:974 msgid "The supplier part has a pack size defined, but flag use_pack_size not set" msgstr "" -#: stock/api.py:969 +#: stock/api.py:1005 msgid "Serial numbers cannot be supplied for a non-trackable part" msgstr "" -#: stock/models.py:63 +#: stock/models.py:59 msgid "Stock Location type" msgstr "" -#: stock/models.py:64 +#: stock/models.py:60 msgid "Stock Location types" msgstr "" -#: stock/models.py:90 +#: stock/models.py:86 msgid "Default icon for all locations that have no icon set (optional)" msgstr "" -#: stock/models.py:125 stock/models.py:771 +#: stock/models.py:123 stock/models.py:788 #: 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 +#: stock/models.py:124 stock/templates/stock/location.html:186 #: templates/InvenTree/search.html:166 templates/js/translated/search.js:178 #: users/models.py:205 msgid "Stock Locations" msgstr "" -#: stock/models.py:158 stock/models.py:932 +#: stock/models.py:166 stock/models.py:949 #: stock/templates/stock/item_base.html:247 msgid "Owner" msgstr "" -#: stock/models.py:159 stock/models.py:933 +#: stock/models.py:167 stock/models.py:950 msgid "Select Owner" msgstr "" -#: stock/models.py:167 +#: stock/models.py:175 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 +#: stock/models.py:182 templates/js/translated/stock.js:2781 #: templates/js/translated/table_filters.js:243 msgid "External" msgstr "" -#: stock/models.py:175 +#: stock/models.py:183 msgid "This is an external stock location" msgstr "" -#: stock/models.py:181 templates/js/translated/stock.js:2790 +#: stock/models.py:189 templates/js/translated/stock.js:2790 #: templates/js/translated/table_filters.js:246 msgid "Location type" msgstr "" -#: stock/models.py:185 +#: stock/models.py:193 msgid "Stock location type of this location" msgstr "" -#: stock/models.py:254 +#: stock/models.py:262 msgid "You cannot make this stock location structural because some stock items are already located into it!" msgstr "" -#: stock/models.py:626 +#: stock/models.py:643 msgid "Stock items cannot be located into structural stock locations!" msgstr "" -#: stock/models.py:653 stock/serializers.py:290 +#: stock/models.py:670 stock/serializers.py:419 msgid "Stock item cannot be created for virtual parts" msgstr "" -#: stock/models.py:670 +#: stock/models.py:687 #, python-brace-format msgid "Part type ('{self.supplier_part.part}') must be {self.part}" msgstr "" -#: stock/models.py:680 stock/models.py:693 +#: stock/models.py:697 stock/models.py:710 msgid "Quantity must be 1 for item with a serial number" msgstr "" -#: stock/models.py:683 +#: stock/models.py:700 msgid "Serial number cannot be set if quantity greater than 1" msgstr "" -#: stock/models.py:707 +#: stock/models.py:724 msgid "Item cannot belong to itself" msgstr "" -#: stock/models.py:712 +#: stock/models.py:729 msgid "Item must have a build reference if is_building=True" msgstr "" -#: stock/models.py:725 +#: stock/models.py:742 msgid "Build reference does not point to the same part object" msgstr "" -#: stock/models.py:741 +#: stock/models.py:758 msgid "Parent Stock Item" msgstr "" -#: stock/models.py:753 +#: stock/models.py:770 msgid "Base part" msgstr "" -#: stock/models.py:763 +#: stock/models.py:780 msgid "Select a matching supplier part for this stock item" msgstr "" -#: stock/models.py:775 +#: stock/models.py:792 msgid "Where is this stock item located?" msgstr "" -#: stock/models.py:783 stock/serializers.py:1351 +#: stock/models.py:800 stock/serializers.py:1480 msgid "Packaging this stock item is stored in" msgstr "" -#: stock/models.py:794 +#: stock/models.py:811 msgid "Is this item installed in another item?" msgstr "" -#: stock/models.py:813 +#: stock/models.py:830 msgid "Serial number for this item" msgstr "" -#: stock/models.py:827 stock/serializers.py:1334 +#: stock/models.py:844 stock/serializers.py:1463 msgid "Batch code for this stock item" msgstr "" -#: stock/models.py:832 +#: stock/models.py:849 msgid "Stock Quantity" msgstr "" -#: stock/models.py:842 +#: stock/models.py:859 msgid "Source Build" msgstr "" -#: stock/models.py:845 +#: stock/models.py:862 msgid "Build for this stock item" msgstr "" -#: stock/models.py:852 stock/templates/stock/item_base.html:363 +#: stock/models.py:869 stock/templates/stock/item_base.html:363 msgid "Consumed By" msgstr "" -#: stock/models.py:855 +#: stock/models.py:872 msgid "Build order which consumed this stock item" msgstr "" -#: stock/models.py:864 +#: stock/models.py:881 msgid "Source Purchase Order" msgstr "" -#: stock/models.py:868 +#: stock/models.py:885 msgid "Purchase order for this stock item" msgstr "" -#: stock/models.py:874 +#: stock/models.py:891 msgid "Destination Sales Order" msgstr "" -#: stock/models.py:885 +#: stock/models.py:902 msgid "Expiry date for stock item. Stock will be considered expired after this date" msgstr "" -#: stock/models.py:903 +#: stock/models.py:920 msgid "Delete on deplete" msgstr "" -#: stock/models.py:904 +#: stock/models.py:921 msgid "Delete this Stock Item when stock is depleted" msgstr "" -#: stock/models.py:924 +#: stock/models.py:941 msgid "Single unit purchase price at time of purchase" msgstr "" -#: stock/models.py:955 +#: stock/models.py:972 msgid "Converted to part" msgstr "" -#: stock/models.py:1465 +#: stock/models.py:1490 msgid "Part is not set as trackable" msgstr "" -#: stock/models.py:1471 +#: stock/models.py:1496 msgid "Quantity must be integer" msgstr "" -#: stock/models.py:1479 +#: stock/models.py:1504 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({self.quantity})" msgstr "" -#: stock/models.py:1485 +#: stock/models.py:1510 msgid "Serial numbers must be a list of integers" msgstr "" -#: stock/models.py:1490 +#: stock/models.py:1515 msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:1498 stock/serializers.py:529 +#: stock/models.py:1523 stock/serializers.py:658 msgid "Serial numbers already exist" msgstr "" -#: stock/models.py:1595 +#: stock/models.py:1620 msgid "Test template does not exist" msgstr "" -#: stock/models.py:1613 +#: stock/models.py:1638 msgid "Stock item has been assigned to a sales order" msgstr "" -#: stock/models.py:1617 +#: stock/models.py:1642 msgid "Stock item is installed in another item" msgstr "" -#: stock/models.py:1620 +#: stock/models.py:1645 msgid "Stock item contains other items" msgstr "" -#: stock/models.py:1623 +#: stock/models.py:1648 msgid "Stock item has been assigned to a customer" msgstr "" -#: stock/models.py:1626 +#: stock/models.py:1651 msgid "Stock item is currently in production" msgstr "" -#: stock/models.py:1629 +#: stock/models.py:1654 msgid "Serialized stock cannot be merged" msgstr "" -#: stock/models.py:1636 stock/serializers.py:1240 +#: stock/models.py:1661 stock/serializers.py:1369 msgid "Duplicate stock items" msgstr "" -#: stock/models.py:1640 +#: stock/models.py:1665 msgid "Stock items must refer to the same part" msgstr "" -#: stock/models.py:1648 +#: stock/models.py:1673 msgid "Stock items must refer to the same supplier part" msgstr "" -#: stock/models.py:1653 +#: stock/models.py:1678 msgid "Stock status codes must match" msgstr "" -#: stock/models.py:1870 +#: stock/models.py:1905 msgid "StockItem cannot be moved as it is not in stock" msgstr "" -#: stock/models.py:2333 +#: stock/models.py:2326 msgid "Entry notes" msgstr "" -#: stock/models.py:2398 +#: stock/models.py:2391 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:2403 +#: stock/models.py:2396 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:2430 +#: stock/models.py:2423 msgid "Test result" msgstr "" -#: stock/models.py:2437 +#: stock/models.py:2430 msgid "Test output value" msgstr "" -#: stock/models.py:2445 +#: stock/models.py:2438 msgid "Test result attachment" msgstr "" -#: stock/models.py:2449 +#: stock/models.py:2442 msgid "Test notes" msgstr "" -#: stock/models.py:2457 templates/js/translated/stock.js:1545 +#: stock/models.py:2450 templates/js/translated/stock.js:1548 msgid "Test station" msgstr "" -#: stock/models.py:2458 +#: stock/models.py:2451 msgid "The identifier of the test station where the test was performed" msgstr "" -#: stock/models.py:2464 +#: stock/models.py:2457 msgid "Started" msgstr "" -#: stock/models.py:2465 +#: stock/models.py:2458 msgid "The timestamp of the test start" msgstr "" -#: stock/models.py:2471 +#: stock/models.py:2464 msgid "Finished" msgstr "" -#: stock/models.py:2472 +#: stock/models.py:2465 msgid "The timestamp of the test finish" msgstr "" -#: stock/serializers.py:100 +#: stock/serializers.py:75 +msgid "Generated batch code" +msgstr "" + +#: stock/serializers.py:84 +msgid "Select build order" +msgstr "" + +#: stock/serializers.py:93 +msgid "Select stock item to generate batch code for" +msgstr "" + +#: stock/serializers.py:102 +msgid "Select location to generate batch code for" +msgstr "" + +#: stock/serializers.py:111 +msgid "Select part to generate batch code for" +msgstr "" + +#: stock/serializers.py:120 +msgid "Select purchase order" +msgstr "" + +#: stock/serializers.py:127 +msgid "Enter quantity for batch code" +msgstr "" + +#: stock/serializers.py:150 +msgid "Generated serial number" +msgstr "" + +#: stock/serializers.py:159 +msgid "Select part to generate serial number for" +msgstr "" + +#: stock/serializers.py:167 +msgid "Quantity of serial numbers to generate" +msgstr "" + +#: stock/serializers.py:229 msgid "Test template for this result" msgstr "" -#: stock/serializers.py:119 +#: stock/serializers.py:248 msgid "Template ID or test name must be provided" msgstr "" -#: stock/serializers.py:151 +#: stock/serializers.py:280 msgid "The test finished time cannot be earlier than the test started time" msgstr "" -#: stock/serializers.py:184 +#: stock/serializers.py:313 msgid "Serial number is too large" msgstr "" -#: stock/serializers.py:282 +#: stock/serializers.py:411 msgid "Use pack size when adding: the quantity defined is the number of packs" msgstr "" -#: stock/serializers.py:402 +#: stock/serializers.py:531 msgid "Purchase price of this stock item, per unit or pack" msgstr "" -#: stock/serializers.py:464 +#: stock/serializers.py:593 msgid "Enter number of stock items to serialize" msgstr "" -#: stock/serializers.py:477 +#: stock/serializers.py:606 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({q})" msgstr "" -#: stock/serializers.py:484 +#: stock/serializers.py:613 msgid "Enter serial numbers for new items" msgstr "" -#: stock/serializers.py:495 stock/serializers.py:1197 stock/serializers.py:1453 +#: stock/serializers.py:624 stock/serializers.py:1326 stock/serializers.py:1582 msgid "Destination stock location" msgstr "" -#: stock/serializers.py:502 +#: stock/serializers.py:631 msgid "Optional note field" msgstr "" -#: stock/serializers.py:512 +#: stock/serializers.py:641 msgid "Serial numbers cannot be assigned to this part" msgstr "" -#: stock/serializers.py:567 +#: stock/serializers.py:696 msgid "Select stock item to install" msgstr "" -#: stock/serializers.py:574 +#: stock/serializers.py:703 msgid "Quantity to Install" msgstr "" -#: stock/serializers.py:575 +#: stock/serializers.py:704 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 +#: stock/serializers.py:709 stock/serializers.py:789 stock/serializers.py:885 +#: stock/serializers.py:935 msgid "Add transaction note (optional)" msgstr "" -#: stock/serializers.py:588 +#: stock/serializers.py:717 msgid "Quantity to install must be at least 1" msgstr "" -#: stock/serializers.py:596 +#: stock/serializers.py:725 msgid "Stock item is unavailable" msgstr "" -#: stock/serializers.py:607 +#: stock/serializers.py:736 msgid "Selected part is not in the Bill of Materials" msgstr "" -#: stock/serializers.py:620 +#: stock/serializers.py:749 msgid "Quantity to install must not exceed available quantity" msgstr "" -#: stock/serializers.py:655 +#: stock/serializers.py:784 msgid "Destination location for uninstalled item" msgstr "" -#: stock/serializers.py:690 +#: stock/serializers.py:819 msgid "Select part to convert stock item into" msgstr "" -#: stock/serializers.py:703 +#: stock/serializers.py:832 msgid "Selected part is not a valid option for conversion" msgstr "" -#: stock/serializers.py:720 +#: stock/serializers.py:849 msgid "Cannot convert stock item with assigned SupplierPart" msgstr "" -#: stock/serializers.py:751 +#: stock/serializers.py:880 msgid "Destination location for returned item" msgstr "" -#: stock/serializers.py:788 +#: stock/serializers.py:917 msgid "Select stock items to change status" msgstr "" -#: stock/serializers.py:794 +#: stock/serializers.py:923 msgid "No stock items selected" msgstr "" -#: stock/serializers.py:890 stock/serializers.py:953 +#: stock/serializers.py:1019 stock/serializers.py:1082 #: stock/templates/stock/location.html:165 -#: stock/templates/stock/location.html:213 +#: stock/templates/stock/location.html:220 #: stock/templates/stock/location_sidebar.html:5 msgid "Sublocations" msgstr "" -#: stock/serializers.py:1069 +#: stock/serializers.py:1198 msgid "Part must be salable" msgstr "" -#: stock/serializers.py:1073 +#: stock/serializers.py:1202 msgid "Item is allocated to a sales order" msgstr "" -#: stock/serializers.py:1077 +#: stock/serializers.py:1206 msgid "Item is allocated to a build order" msgstr "" -#: stock/serializers.py:1101 +#: stock/serializers.py:1230 msgid "Customer to assign stock items" msgstr "" -#: stock/serializers.py:1107 +#: stock/serializers.py:1236 msgid "Selected company is not a customer" msgstr "" -#: stock/serializers.py:1115 +#: stock/serializers.py:1244 msgid "Stock assignment notes" msgstr "" -#: stock/serializers.py:1125 stock/serializers.py:1379 +#: stock/serializers.py:1254 stock/serializers.py:1508 msgid "A list of stock items must be provided" msgstr "" -#: stock/serializers.py:1204 +#: stock/serializers.py:1333 msgid "Stock merging notes" msgstr "" -#: stock/serializers.py:1209 +#: stock/serializers.py:1338 msgid "Allow mismatched suppliers" msgstr "" -#: stock/serializers.py:1210 +#: stock/serializers.py:1339 msgid "Allow stock items with different supplier parts to be merged" msgstr "" -#: stock/serializers.py:1215 +#: stock/serializers.py:1344 msgid "Allow mismatched status" msgstr "" -#: stock/serializers.py:1216 +#: stock/serializers.py:1345 msgid "Allow stock items with different status codes to be merged" msgstr "" -#: stock/serializers.py:1226 +#: stock/serializers.py:1355 msgid "At least two stock items must be provided" msgstr "" -#: stock/serializers.py:1293 +#: stock/serializers.py:1422 msgid "No Change" msgstr "" -#: stock/serializers.py:1322 +#: stock/serializers.py:1451 msgid "StockItem primary key value" msgstr "" -#: stock/serializers.py:1341 +#: stock/serializers.py:1470 msgid "Stock item status code" msgstr "" -#: stock/serializers.py:1369 +#: stock/serializers.py:1498 msgid "Stock transaction notes" msgstr "" +#: stock/status_codes.py:11 +msgid "OK" +msgstr "OK" + +#: stock/status_codes.py:12 +msgid "Attention needed" +msgstr "Vyžaduje pozornost" + +#: stock/status_codes.py:13 +msgid "Damaged" +msgstr "Poškozeno" + +#: stock/status_codes.py:14 +msgid "Destroyed" +msgstr "Zničeno" + +#: stock/status_codes.py:15 +msgid "Rejected" +msgstr "Odmítnuto" + +#: stock/status_codes.py:19 +msgid "Quarantined" +msgstr "V karanténě" + +#: stock/status_codes.py:40 +msgid "Legacy stock tracking entry" +msgstr "Původní položka sledování zásob" + +#: stock/status_codes.py:42 templates/js/translated/stock.js:544 +msgid "Stock item created" +msgstr "Položka zásob vytvořena" + +#: stock/status_codes.py:45 +msgid "Edited stock item" +msgstr "Položka zásob upravena" + +#: stock/status_codes.py:46 +msgid "Assigned serial number" +msgstr "Přiřazeno výrobní číslo" + +#: stock/status_codes.py:49 +msgid "Stock counted" +msgstr "Stav zásob sečten" + +#: stock/status_codes.py:50 +msgid "Stock manually added" +msgstr "Zásoba přidána ručně" + +#: stock/status_codes.py:51 +msgid "Stock manually removed" +msgstr "Zásoba odebrána ručně" + +#: stock/status_codes.py:54 +msgid "Location changed" +msgstr "Umístění změněno" + +#: stock/status_codes.py:55 +msgid "Stock updated" +msgstr "Stav zásob byl aktualizován" + +#: stock/status_codes.py:58 +msgid "Installed into assembly" +msgstr "Nainstalováno do sestavy" + +#: stock/status_codes.py:59 +msgid "Removed from assembly" +msgstr "Odstraněno ze sestavy" + +#: stock/status_codes.py:61 +msgid "Installed component item" +msgstr "Instalovaná položka komponenty" + +#: stock/status_codes.py:62 +msgid "Removed component item" +msgstr "Odstraněná komponenta" + +#: stock/status_codes.py:65 +msgid "Split from parent item" +msgstr "Rozdělit od nadřazené položky" + +#: stock/status_codes.py:66 +msgid "Split child item" +msgstr "Rozdělit podřazený předmět" + +#: stock/status_codes.py:69 templates/js/translated/stock.js:1858 +msgid "Merged stock items" +msgstr "Sloučené položky zásob" + +#: stock/status_codes.py:72 +msgid "Converted to variant" +msgstr "Převedeno na variantu" + +#: stock/status_codes.py:75 +msgid "Build order output created" +msgstr "Výstup objednávky byl vytvořen" + +#: stock/status_codes.py:76 +msgid "Build order output completed" +msgstr "Výstup objednávky sestavení dokončen" + +#: stock/status_codes.py:77 +msgid "Build order output rejected" +msgstr "Výstup objednávky sestavení byl odmítnut" + +#: stock/status_codes.py:78 templates/js/translated/stock.js:1764 +msgid "Consumed by build order" +msgstr "Spotřebováno podle objednávky" + +#: stock/status_codes.py:81 +msgid "Shipped against Sales Order" +msgstr "Odesláno v souladu se zákaznickou objednávkou" + +#: stock/status_codes.py:84 +msgid "Received against Purchase Order" +msgstr "Přijato proti objednávce" + +#: stock/status_codes.py:87 +msgid "Returned against Return Order" +msgstr "Vráceno proti vratce" + +#: stock/status_codes.py:90 templates/js/translated/table_filters.js:375 +msgid "Sent to customer" +msgstr "Odesláno zákazníkovi" + +#: stock/status_codes.py:91 +msgid "Returned from customer" +msgstr "Vráceno od zákazníka" + #: stock/templates/stock/item.html:17 msgid "Stock Tracking Information" msgstr "" @@ -9319,7 +9448,7 @@ msgstr "" msgid "Test Report" msgstr "" -#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:286 +#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:284 msgid "Delete Test Data" msgstr "" @@ -9339,11 +9468,11 @@ msgstr "" msgid "Install Stock Item" msgstr "" -#: stock/templates/stock/item.html:274 +#: stock/templates/stock/item.html:272 msgid "Delete all test results for this stock item" msgstr "" -#: stock/templates/stock/item.html:304 templates/js/translated/stock.js:1698 +#: stock/templates/stock/item.html:302 templates/js/translated/stock.js:1701 msgid "Add Test Result" msgstr "" @@ -9366,17 +9495,17 @@ msgid "Stock adjustment actions" msgstr "" #: stock/templates/stock/item_base.html:79 -#: stock/templates/stock/location.html:90 templates/js/translated/stock.js:1821 +#: stock/templates/stock/location.html:90 templates/js/translated/stock.js:1824 msgid "Count stock" msgstr "" #: stock/templates/stock/item_base.html:81 -#: templates/js/translated/stock.js:1803 +#: templates/js/translated/stock.js:1806 msgid "Add stock" msgstr "" #: stock/templates/stock/item_base.html:82 -#: templates/js/translated/stock.js:1812 +#: templates/js/translated/stock.js:1815 msgid "Remove stock" msgstr "" @@ -9385,12 +9514,12 @@ msgid "Serialize stock" msgstr "" #: stock/templates/stock/item_base.html:88 -#: stock/templates/stock/location.html:96 templates/js/translated/stock.js:1830 +#: stock/templates/stock/location.html:96 templates/js/translated/stock.js:1833 msgid "Transfer stock" msgstr "" #: stock/templates/stock/item_base.html:91 -#: templates/js/translated/stock.js:1884 +#: templates/js/translated/stock.js:1887 msgid "Assign to customer" msgstr "" @@ -9431,7 +9560,7 @@ 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 +#: templates/js/translated/build.js:2123 templates/navbar.html:38 msgid "Build" msgstr "Sestavení" @@ -9497,7 +9626,7 @@ msgid "Available Quantity" msgstr "" #: stock/templates/stock/item_base.html:398 -#: templates/js/translated/build.js:2378 +#: templates/js/translated/build.js:2380 msgid "No location set" msgstr "" @@ -9528,40 +9657,40 @@ msgstr "" msgid "No stocktake performed" msgstr "" -#: stock/templates/stock/item_base.html:507 -#: templates/js/translated/stock.js:1951 +#: stock/templates/stock/item_base.html:504 +#: templates/js/translated/stock.js:1952 msgid "stock item" msgstr "" -#: stock/templates/stock/item_base.html:532 +#: stock/templates/stock/item_base.html:527 msgid "Edit Stock Status" msgstr "" -#: stock/templates/stock/item_base.html:541 +#: stock/templates/stock/item_base.html:536 msgid "Stock Item QR Code" msgstr "" -#: stock/templates/stock/item_base.html:552 +#: stock/templates/stock/item_base.html:547 msgid "Link Barcode to Stock Item" msgstr "" -#: stock/templates/stock/item_base.html:616 +#: stock/templates/stock/item_base.html:611 msgid "Select one of the part variants listed below." msgstr "" -#: stock/templates/stock/item_base.html:619 +#: stock/templates/stock/item_base.html:614 msgid "Warning" msgstr "" -#: stock/templates/stock/item_base.html:620 +#: stock/templates/stock/item_base.html:615 msgid "This action cannot be easily undone" msgstr "" -#: stock/templates/stock/item_base.html:628 +#: stock/templates/stock/item_base.html:623 msgid "Convert Stock Item" msgstr "" -#: stock/templates/stock/item_base.html:662 +#: stock/templates/stock/item_base.html:657 msgid "Return to Stock" msgstr "" @@ -9625,28 +9754,32 @@ msgstr "" 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 +#: stock/templates/stock/location.html:176 +msgid "Location Type" +msgstr "" + +#: stock/templates/stock/location.html:224 msgid "Create new stock location" msgstr "" -#: stock/templates/stock/location.html:218 +#: stock/templates/stock/location.html:225 msgid "New Location" msgstr "" -#: stock/templates/stock/location.html:287 +#: stock/templates/stock/location.html:295 #: templates/js/translated/stock.js:2572 msgid "stock location" msgstr "" -#: stock/templates/stock/location.html:315 +#: stock/templates/stock/location.html:317 msgid "Scanned stock container into this location" msgstr "" -#: stock/templates/stock/location.html:388 +#: stock/templates/stock/location.html:390 msgid "Stock Location QR Code" msgstr "" -#: stock/templates/stock/location.html:399 +#: stock/templates/stock/location.html:401 msgid "Link Barcode to Stock Location" msgstr "" @@ -9872,12 +10005,12 @@ msgstr "" 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/InvenTree/settings/login.html:27 templates/account/signup.html:5 #: templates/socialaccount/signup.html:5 msgid "Signup" msgstr "" -#: templates/InvenTree/settings/login.html:34 +#: templates/InvenTree/settings/login.html:36 msgid "Single Sign On" msgstr "" @@ -9916,11 +10049,11 @@ msgstr "" msgid "Part Settings" msgstr "" -#: templates/InvenTree/settings/part.html:42 +#: templates/InvenTree/settings/part.html:43 msgid "Part Import" msgstr "" -#: templates/InvenTree/settings/part.html:46 +#: templates/InvenTree/settings/part.html:47 msgid "Import Part" msgstr "" @@ -9954,36 +10087,36 @@ msgstr "" 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/plugin.html:38 #: templates/InvenTree/settings/sidebar.html:66 msgid "Plugins" msgstr "" -#: templates/InvenTree/settings/plugin.html:42 -#: templates/InvenTree/settings/plugin.html:43 +#: templates/InvenTree/settings/plugin.html:44 +#: templates/InvenTree/settings/plugin.html:45 #: templates/js/translated/plugin.js:151 msgid "Install Plugin" msgstr "" -#: templates/InvenTree/settings/plugin.html:45 -#: templates/InvenTree/settings/plugin.html:46 +#: templates/InvenTree/settings/plugin.html:47 +#: templates/InvenTree/settings/plugin.html:48 #: templates/js/translated/plugin.js:224 msgid "Reload Plugins" msgstr "" -#: templates/InvenTree/settings/plugin.html:56 +#: templates/InvenTree/settings/plugin.html:58 msgid "External plugins are not enabled for this InvenTree installation" msgstr "" -#: templates/InvenTree/settings/plugin.html:71 +#: templates/InvenTree/settings/plugin.html:73 msgid "Plugin Error Stack" msgstr "" -#: templates/InvenTree/settings/plugin.html:80 +#: templates/InvenTree/settings/plugin.html:82 msgid "Stage" msgstr "" -#: templates/InvenTree/settings/plugin.html:82 +#: templates/InvenTree/settings/plugin.html:84 #: templates/js/translated/notification.js:76 msgid "Message" msgstr "" @@ -10141,7 +10274,7 @@ 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:424 +#: templates/js/translated/stock.js:245 users/models.py:411 msgid "Delete" msgstr "Odstranit" @@ -10162,7 +10295,7 @@ msgid "No project codes found" msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:158 -#: templates/js/translated/build.js:2226 +#: templates/js/translated/build.js:2228 msgid "group" msgstr "" @@ -10228,7 +10361,7 @@ msgid "Delete Location Type" msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:500 -#: templates/InvenTree/settings/stock.html:37 +#: templates/InvenTree/settings/stock.html:38 msgid "New Location Type" msgstr "" @@ -10250,7 +10383,7 @@ msgid "Home Page" msgstr "Domovská stránka" #: templates/InvenTree/settings/sidebar.html:15 -#: templates/js/translated/forms.js:2159 templates/js/translated/tables.js:543 +#: templates/js/translated/forms.js:2167 templates/js/translated/tables.js:543 #: templates/navbar.html:107 templates/search.html:8 #: templates/search_form.html:6 templates/search_form.html:7 msgid "Search" @@ -10285,7 +10418,7 @@ msgstr "" msgid "Stock Settings" msgstr "" -#: templates/InvenTree/settings/stock.html:33 +#: templates/InvenTree/settings/stock.html:34 msgid "Stock Location Types" msgstr "" @@ -10384,49 +10517,49 @@ msgstr "" msgid "Remove multifactor" msgstr "" -#: templates/InvenTree/settings/user.html:168 +#: templates/InvenTree/settings/user.html:171 msgid "Active Sessions" msgstr "" -#: templates/InvenTree/settings/user.html:174 +#: templates/InvenTree/settings/user.html:177 msgid "Log out active sessions (except this one)" msgstr "" -#: templates/InvenTree/settings/user.html:175 +#: templates/InvenTree/settings/user.html:178 msgid "Log Out Active Sessions" msgstr "" -#: templates/InvenTree/settings/user.html:184 +#: templates/InvenTree/settings/user.html:187 msgid "unknown on unknown" msgstr "" -#: templates/InvenTree/settings/user.html:185 +#: templates/InvenTree/settings/user.html:188 msgid "unknown" msgstr "" -#: templates/InvenTree/settings/user.html:189 +#: templates/InvenTree/settings/user.html:192 msgid "IP Address" msgstr "" -#: templates/InvenTree/settings/user.html:190 +#: templates/InvenTree/settings/user.html:193 msgid "Device" msgstr "" -#: templates/InvenTree/settings/user.html:191 +#: templates/InvenTree/settings/user.html:194 msgid "Last Activity" msgstr "" -#: templates/InvenTree/settings/user.html:204 +#: templates/InvenTree/settings/user.html:207 #, python-format msgid "%(time)s ago (this session)" msgstr "" -#: templates/InvenTree/settings/user.html:206 +#: templates/InvenTree/settings/user.html:209 #, python-format msgid "%(time)s ago" msgstr "" -#: templates/InvenTree/settings/user.html:218 +#: templates/InvenTree/settings/user.html:223 msgid "Do you really want to remove the selected email address?" msgstr "" @@ -10607,26 +10740,26 @@ msgstr "Potvrdit" 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 +#: templates/account/login.html:6 templates/account/login.html:19 +#: templates/account/login.html:40 templates/socialaccount/login.html:5 msgid "Sign In" msgstr "" -#: templates/account/login.html:21 +#: templates/account/login.html:23 msgid "Not a member?" msgstr "" -#: templates/account/login.html:23 templates/account/signup.html:11 +#: templates/account/login.html:25 templates/account/signup.html:11 #: templates/account/signup.html:22 templates/socialaccount/signup.html:8 #: templates/socialaccount/signup.html:23 msgid "Sign Up" msgstr "" -#: templates/account/login.html:45 +#: templates/account/login.html:47 msgid "Forgot Password?" msgstr "" -#: templates/account/login.html:53 +#: templates/account/login.html:55 msgid "or log in with" msgstr "" @@ -10827,7 +10960,7 @@ 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 +#: templates/js/translated/bom.js:1674 templates/js/translated/build.js:2556 msgid "Required Quantity" msgstr "" @@ -10841,7 +10974,7 @@ msgid "Click on the following link to view this part" msgstr "" #: templates/email/low_stock_notification.html:18 -#: templates/js/translated/part.js:3218 +#: templates/js/translated/part.js:3217 msgid "Minimum Quantity" msgstr "" @@ -11006,7 +11139,7 @@ msgstr "" msgid "Unlink" msgstr "" -#: templates/js/translated/barcode.js:567 templates/js/translated/stock.js:1155 +#: templates/js/translated/barcode.js:567 templates/js/translated/stock.js:1158 msgid "Remove stock item" msgstr "" @@ -11196,7 +11329,7 @@ msgstr "" msgid "Substitutes Available" msgstr "" -#: templates/js/translated/bom.js:950 templates/js/translated/build.js:2501 +#: templates/js/translated/bom.js:950 templates/js/translated/build.js:2500 msgid "Variant stock allowed" msgstr "" @@ -11216,30 +11349,30 @@ msgstr "" msgid "No pricing available" msgstr "" -#: templates/js/translated/bom.js:1184 templates/js/translated/build.js:2622 +#: templates/js/translated/bom.js:1184 templates/js/translated/build.js:2621 msgid "External stock" msgstr "" -#: templates/js/translated/bom.js:1188 templates/js/translated/build.js:2596 -#: templates/js/translated/sales_order.js:1910 +#: templates/js/translated/bom.js:1188 templates/js/translated/build.js:2595 +#: templates/js/translated/sales_order.js:1946 msgid "No Stock Available" msgstr "" -#: templates/js/translated/bom.js:1193 templates/js/translated/build.js:2600 +#: templates/js/translated/bom.js:1193 templates/js/translated/build.js:2599 msgid "Includes variant and substitute stock" msgstr "" -#: templates/js/translated/bom.js:1195 templates/js/translated/build.js:2602 +#: templates/js/translated/bom.js:1195 templates/js/translated/build.js:2601 #: templates/js/translated/part.js:1256 -#: templates/js/translated/sales_order.js:1907 +#: templates/js/translated/sales_order.js:1943 msgid "Includes variant stock" msgstr "" -#: templates/js/translated/bom.js:1197 templates/js/translated/build.js:2604 +#: templates/js/translated/bom.js:1197 templates/js/translated/build.js:2603 msgid "Includes substitute stock" msgstr "" -#: templates/js/translated/bom.js:1225 templates/js/translated/build.js:2587 +#: templates/js/translated/bom.js:1225 templates/js/translated/build.js:2586 msgid "Consumable item" msgstr "" @@ -11271,7 +11404,7 @@ msgstr "" msgid "No BOM items found" msgstr "" -#: templates/js/translated/bom.js:1657 templates/js/translated/build.js:2486 +#: templates/js/translated/bom.js:1657 templates/js/translated/build.js:2485 msgid "Required Part" msgstr "" @@ -11440,207 +11573,207 @@ msgstr "" msgid "No build order allocations found" msgstr "" -#: templates/js/translated/build.js:989 templates/js/translated/build.js:2342 +#: templates/js/translated/build.js:991 templates/js/translated/build.js:2344 msgid "Allocated Quantity" msgstr "" -#: templates/js/translated/build.js:1003 +#: templates/js/translated/build.js:1005 msgid "Location not specified" msgstr "" -#: templates/js/translated/build.js:1025 +#: templates/js/translated/build.js:1027 msgid "Complete outputs" msgstr "" -#: templates/js/translated/build.js:1043 +#: templates/js/translated/build.js:1045 msgid "Scrap outputs" msgstr "" -#: templates/js/translated/build.js:1061 +#: templates/js/translated/build.js:1063 msgid "Delete outputs" msgstr "" -#: templates/js/translated/build.js:1115 +#: templates/js/translated/build.js:1116 msgid "build output" msgstr "" -#: templates/js/translated/build.js:1116 +#: templates/js/translated/build.js:1117 msgid "build outputs" msgstr "" -#: templates/js/translated/build.js:1120 +#: templates/js/translated/build.js:1121 msgid "Build output actions" msgstr "" -#: templates/js/translated/build.js:1294 +#: templates/js/translated/build.js:1297 msgid "No active build outputs found" msgstr "" -#: templates/js/translated/build.js:1387 +#: templates/js/translated/build.js:1390 msgid "Allocated Lines" msgstr "" -#: templates/js/translated/build.js:1401 +#: templates/js/translated/build.js:1404 msgid "Required Tests" msgstr "" -#: templates/js/translated/build.js:1573 +#: templates/js/translated/build.js:1576 #: templates/js/translated/purchase_order.js:611 -#: templates/js/translated/sales_order.js:1171 +#: templates/js/translated/sales_order.js:1207 msgid "Select Parts" msgstr "" -#: templates/js/translated/build.js:1574 -#: templates/js/translated/sales_order.js:1172 +#: templates/js/translated/build.js:1577 +#: templates/js/translated/sales_order.js:1208 msgid "You must select at least one part to allocate" msgstr "" -#: templates/js/translated/build.js:1637 -#: templates/js/translated/sales_order.js:1121 +#: templates/js/translated/build.js:1640 +#: templates/js/translated/sales_order.js:1157 msgid "Specify stock allocation quantity" msgstr "" -#: templates/js/translated/build.js:1714 +#: templates/js/translated/build.js:1717 msgid "All Parts Allocated" msgstr "" -#: templates/js/translated/build.js:1715 +#: templates/js/translated/build.js:1718 msgid "All selected parts have been fully allocated" msgstr "" -#: templates/js/translated/build.js:1729 -#: templates/js/translated/sales_order.js:1186 +#: templates/js/translated/build.js:1732 +#: templates/js/translated/sales_order.js:1222 msgid "Select source location (leave blank to take from all locations)" msgstr "" -#: templates/js/translated/build.js:1757 +#: templates/js/translated/build.js:1760 msgid "Allocate Stock Items to Build Order" msgstr "" -#: templates/js/translated/build.js:1768 -#: templates/js/translated/sales_order.js:1283 +#: templates/js/translated/build.js:1771 +#: templates/js/translated/sales_order.js:1319 msgid "No matching stock locations" msgstr "" -#: templates/js/translated/build.js:1841 -#: templates/js/translated/sales_order.js:1362 +#: templates/js/translated/build.js:1844 +#: templates/js/translated/sales_order.js:1398 msgid "No matching stock items" msgstr "" -#: templates/js/translated/build.js:1938 +#: templates/js/translated/build.js:1941 msgid "Automatic Stock Allocation" msgstr "" -#: templates/js/translated/build.js:1939 +#: templates/js/translated/build.js:1942 msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines" msgstr "" -#: templates/js/translated/build.js:1941 +#: templates/js/translated/build.js:1944 msgid "If a location is specified, stock will only be allocated from that location" msgstr "" -#: templates/js/translated/build.js:1942 +#: templates/js/translated/build.js:1945 msgid "If stock is considered interchangeable, it will be allocated from the first location it is found" msgstr "" -#: templates/js/translated/build.js:1943 +#: templates/js/translated/build.js:1946 msgid "If substitute stock is allowed, it will be used where stock of the primary part cannot be found" msgstr "" -#: templates/js/translated/build.js:1974 +#: templates/js/translated/build.js:1977 msgid "Allocate Stock Items" msgstr "" -#: templates/js/translated/build.js:2080 +#: templates/js/translated/build.js:2082 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 +#: templates/js/translated/build.js:2117 templates/js/translated/build.js:2479 +#: templates/js/translated/forms.js:2163 templates/js/translated/forms.js:2179 +#: templates/js/translated/part.js:2315 templates/js/translated/part.js:2741 +#: templates/js/translated/stock.js:1983 templates/js/translated/stock.js:2710 msgid "Select" msgstr "" -#: templates/js/translated/build.js:2129 +#: templates/js/translated/build.js:2131 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 +#: templates/js/translated/build.js:2213 templates/js/translated/stock.js:3042 msgid "No user information" msgstr "" -#: templates/js/translated/build.js:2387 -#: templates/js/translated/sales_order.js:1646 +#: templates/js/translated/build.js:2389 +#: templates/js/translated/sales_order.js:1682 msgid "Edit stock allocation" msgstr "" -#: templates/js/translated/build.js:2388 -#: templates/js/translated/sales_order.js:1647 +#: templates/js/translated/build.js:2390 +#: templates/js/translated/sales_order.js:1683 msgid "Delete stock allocation" msgstr "" -#: templates/js/translated/build.js:2403 +#: templates/js/translated/build.js:2405 msgid "Edit Allocation" msgstr "" -#: templates/js/translated/build.js:2415 +#: templates/js/translated/build.js:2417 msgid "Remove Allocation" msgstr "" -#: templates/js/translated/build.js:2456 +#: templates/js/translated/build.js:2455 msgid "build line" msgstr "" -#: templates/js/translated/build.js:2457 +#: templates/js/translated/build.js:2456 msgid "build lines" msgstr "" -#: templates/js/translated/build.js:2475 +#: templates/js/translated/build.js:2474 msgid "No build lines found" msgstr "" -#: templates/js/translated/build.js:2505 templates/js/translated/part.js:790 +#: templates/js/translated/build.js:2504 templates/js/translated/part.js:790 #: templates/js/translated/part.js:1202 msgid "Trackable part" msgstr "" -#: templates/js/translated/build.js:2540 +#: templates/js/translated/build.js:2539 msgid "Unit Quantity" msgstr "" -#: templates/js/translated/build.js:2592 -#: templates/js/translated/sales_order.js:1915 +#: templates/js/translated/build.js:2591 +#: templates/js/translated/sales_order.js:1951 msgid "Sufficient stock available" msgstr "" -#: templates/js/translated/build.js:2647 +#: templates/js/translated/build.js:2646 msgid "Consumable Item" msgstr "" -#: templates/js/translated/build.js:2652 +#: templates/js/translated/build.js:2653 msgid "Tracked item" msgstr "" -#: templates/js/translated/build.js:2659 -#: templates/js/translated/sales_order.js:2016 +#: templates/js/translated/build.js:2654 +msgid "Allocate tracked items against individual build outputs" +msgstr "" + +#: templates/js/translated/build.js:2662 +#: templates/js/translated/sales_order.js:2052 msgid "Build stock" msgstr "" -#: templates/js/translated/build.js:2664 templates/js/translated/stock.js:1865 +#: templates/js/translated/build.js:2667 templates/js/translated/stock.js:1868 msgid "Order stock" msgstr "" -#: templates/js/translated/build.js:2668 -#: templates/js/translated/sales_order.js:2010 +#: templates/js/translated/build.js:2671 +#: templates/js/translated/sales_order.js:2046 msgid "Allocate stock" msgstr "" -#: templates/js/translated/build.js:2672 +#: templates/js/translated/build.js:2675 msgid "Remove stock allocation" msgstr "" @@ -11886,12 +12019,12 @@ msgid "Delete price break" msgstr "" #: templates/js/translated/filters.js:186 -#: templates/js/translated/filters.js:672 +#: templates/js/translated/filters.js:667 msgid "true" msgstr "" #: templates/js/translated/filters.js:190 -#: templates/js/translated/filters.js:673 +#: templates/js/translated/filters.js:668 msgid "false" msgstr "" @@ -11923,7 +12056,7 @@ msgstr "" msgid "Clear all filters" msgstr "" -#: templates/js/translated/filters.js:582 +#: templates/js/translated/filters.js:577 msgid "Create filter" msgstr "" @@ -11956,32 +12089,32 @@ msgstr "" msgid "Enter a valid number" msgstr "" -#: templates/js/translated/forms.js:1473 templates/modals.html:19 +#: templates/js/translated/forms.js:1477 templates/modals.html:19 #: templates/modals.html:43 msgid "Form errors exist" msgstr "" -#: templates/js/translated/forms.js:1971 +#: templates/js/translated/forms.js:1975 msgid "No results found" msgstr "" -#: templates/js/translated/forms.js:2275 templates/js/translated/search.js:239 +#: templates/js/translated/forms.js:2285 templates/js/translated/search.js:239 msgid "Searching" msgstr "" -#: templates/js/translated/forms.js:2489 +#: templates/js/translated/forms.js:2499 msgid "Clear input" msgstr "" -#: templates/js/translated/forms.js:3091 +#: templates/js/translated/forms.js:3101 msgid "File Column" msgstr "" -#: templates/js/translated/forms.js:3091 +#: templates/js/translated/forms.js:3101 msgid "Field Name" msgstr "" -#: templates/js/translated/forms.js:3103 +#: templates/js/translated/forms.js:3113 msgid "Select Columns" msgstr "" @@ -12005,51 +12138,15 @@ msgstr "" msgid "No parts required for builds" msgstr "" -#: templates/js/translated/label.js:53 templates/js/translated/report.js:123 +#: templates/js/translated/label.js:55 templates/js/translated/report.js:38 msgid "Select Items" msgstr "" -#: templates/js/translated/label.js:54 +#: templates/js/translated/label.js:56 templates/js/translated/report.js:39 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 +#: templates/js/translated/label.js:150 msgid "Labels sent to printer" msgstr "" @@ -12167,7 +12264,7 @@ msgid "Delete Line" msgstr "" #: templates/js/translated/order.js:281 -#: templates/js/translated/purchase_order.js:1991 +#: templates/js/translated/purchase_order.js:1990 msgid "No line items found" msgstr "" @@ -12405,19 +12502,19 @@ msgid "Delete Part Parameter Template" msgstr "" #: templates/js/translated/part.js:1716 -#: templates/js/translated/purchase_order.js:1655 +#: templates/js/translated/purchase_order.js:1654 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 +#: templates/js/translated/purchase_order.js:2153 +#: templates/js/translated/return_order.js:755 +#: templates/js/translated/sales_order.js:1911 msgid "This line item is overdue" msgstr "" #: templates/js/translated/part.js:1906 -#: templates/js/translated/purchase_order.js:2221 +#: templates/js/translated/purchase_order.js:2220 msgid "Receive line item" msgstr "" @@ -12429,7 +12526,7 @@ msgstr "" msgid "Delete Part Relationship" msgstr "" -#: templates/js/translated/part.js:2079 templates/js/translated/part.js:2506 +#: templates/js/translated/part.js:2079 templates/js/translated/part.js:2505 msgid "No parts found" msgstr "" @@ -12445,101 +12542,101 @@ msgstr "" msgid "Set category" msgstr "" -#: templates/js/translated/part.js:2287 +#: templates/js/translated/part.js:2286 msgid "part" msgstr "" -#: templates/js/translated/part.js:2288 +#: templates/js/translated/part.js:2287 msgid "parts" msgstr "" -#: templates/js/translated/part.js:2384 +#: templates/js/translated/part.js:2383 msgid "No category" msgstr "" -#: templates/js/translated/part.js:2531 templates/js/translated/part.js:2661 +#: templates/js/translated/part.js:2530 templates/js/translated/part.js:2660 #: templates/js/translated/stock.js:2669 msgid "Display as list" msgstr "" -#: templates/js/translated/part.js:2547 +#: templates/js/translated/part.js:2546 msgid "Display as grid" msgstr "" -#: templates/js/translated/part.js:2645 +#: templates/js/translated/part.js:2644 msgid "No subcategories found" msgstr "" -#: templates/js/translated/part.js:2681 templates/js/translated/stock.js:2689 +#: templates/js/translated/part.js:2680 templates/js/translated/stock.js:2689 msgid "Display as tree" msgstr "" -#: templates/js/translated/part.js:2761 +#: templates/js/translated/part.js:2760 msgid "Load Subcategories" msgstr "" -#: templates/js/translated/part.js:2777 +#: templates/js/translated/part.js:2776 msgid "Subscribed category" msgstr "" -#: templates/js/translated/part.js:2864 +#: templates/js/translated/part.js:2863 msgid "No test templates matching query" msgstr "" -#: templates/js/translated/part.js:2886 templates/js/translated/search.js:342 +#: templates/js/translated/part.js:2885 templates/js/translated/search.js:342 msgid "results" msgstr "" -#: templates/js/translated/part.js:2936 templates/js/translated/stock.js:1453 +#: templates/js/translated/part.js:2935 templates/js/translated/stock.js:1456 msgid "Edit test result" msgstr "" -#: templates/js/translated/part.js:2937 templates/js/translated/stock.js:1454 -#: templates/js/translated/stock.js:1728 +#: templates/js/translated/part.js:2936 templates/js/translated/stock.js:1457 +#: templates/js/translated/stock.js:1731 msgid "Delete test result" msgstr "" -#: templates/js/translated/part.js:2941 +#: templates/js/translated/part.js:2940 msgid "This test is defined for a parent part" msgstr "" -#: templates/js/translated/part.js:2957 +#: templates/js/translated/part.js:2956 msgid "Edit Test Result Template" msgstr "" -#: templates/js/translated/part.js:2971 +#: templates/js/translated/part.js:2970 msgid "Delete Test Result Template" msgstr "" -#: templates/js/translated/part.js:3050 templates/js/translated/part.js:3051 +#: templates/js/translated/part.js:3049 templates/js/translated/part.js:3050 msgid "No date specified" msgstr "" -#: templates/js/translated/part.js:3053 +#: templates/js/translated/part.js:3052 msgid "Specified date is in the past" msgstr "" -#: templates/js/translated/part.js:3059 +#: templates/js/translated/part.js:3058 msgid "Speculative" msgstr "" -#: templates/js/translated/part.js:3109 +#: templates/js/translated/part.js:3108 msgid "No scheduling information available for this part" msgstr "" -#: templates/js/translated/part.js:3115 +#: templates/js/translated/part.js:3114 msgid "Error fetching scheduling information for this part" msgstr "" -#: templates/js/translated/part.js:3211 +#: templates/js/translated/part.js:3210 msgid "Scheduled Stock Quantities" msgstr "" -#: templates/js/translated/part.js:3227 +#: templates/js/translated/part.js:3226 msgid "Maximum Quantity" msgstr "" -#: templates/js/translated/part.js:3272 +#: templates/js/translated/part.js:3271 msgid "Minimum Stock Level" msgstr "" @@ -12665,7 +12762,7 @@ msgstr "" #: templates/js/translated/purchase_order.js:448 #: templates/js/translated/return_order.js:210 -#: templates/js/translated/sales_order.js:500 +#: templates/js/translated/sales_order.js:552 msgid "Mark this order as complete?" msgstr "" @@ -12678,7 +12775,6 @@ 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 "" @@ -12736,12 +12832,12 @@ msgid "No matching purchase orders" msgstr "" #: templates/js/translated/purchase_order.js:1073 -#: templates/js/translated/return_order.js:491 +#: templates/js/translated/return_order.js:490 msgid "Select Line Items" msgstr "" #: templates/js/translated/purchase_order.js:1074 -#: templates/js/translated/return_order.js:492 +#: templates/js/translated/return_order.js:491 msgid "At least one line item must be selected" msgstr "" @@ -12790,7 +12886,7 @@ msgid "Quantity to Receive" msgstr "" #: templates/js/translated/purchase_order.js:1333 -#: templates/js/translated/return_order.js:561 +#: templates/js/translated/return_order.js:560 msgid "Confirm receipt of items" msgstr "" @@ -12810,81 +12906,66 @@ msgstr "" 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 +#: templates/js/translated/purchase_order.js:1681 +#: templates/js/translated/return_order.js:285 +#: templates/js/translated/sales_order.js:810 +#: templates/js/translated/sales_order.js:1034 msgid "Order is overdue" msgstr "" -#: templates/js/translated/purchase_order.js: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 +#: templates/js/translated/purchase_order.js:1843 msgid "All selected Line items will be deleted" msgstr "" -#: templates/js/translated/purchase_order.js:1862 +#: templates/js/translated/purchase_order.js:1861 msgid "Delete selected Line items?" msgstr "" -#: templates/js/translated/purchase_order.js:1917 -#: templates/js/translated/sales_order.js:2070 +#: templates/js/translated/purchase_order.js:1916 +#: templates/js/translated/sales_order.js:2106 msgid "Duplicate Line Item" msgstr "" -#: templates/js/translated/purchase_order.js:1932 -#: templates/js/translated/return_order.js:476 -#: templates/js/translated/return_order.js:669 -#: templates/js/translated/sales_order.js:2083 +#: templates/js/translated/purchase_order.js:1931 +#: templates/js/translated/return_order.js:475 +#: templates/js/translated/return_order.js:668 +#: templates/js/translated/sales_order.js:2119 msgid "Edit Line Item" msgstr "" -#: templates/js/translated/purchase_order.js:1943 -#: templates/js/translated/return_order.js:682 -#: templates/js/translated/sales_order.js:2094 +#: templates/js/translated/purchase_order.js:1942 +#: templates/js/translated/return_order.js:681 +#: templates/js/translated/sales_order.js:2130 msgid "Delete Line Item" msgstr "" -#: templates/js/translated/purchase_order.js:2225 -#: templates/js/translated/sales_order.js:2024 +#: templates/js/translated/purchase_order.js:2224 +#: templates/js/translated/sales_order.js:2060 msgid "Duplicate line item" msgstr "" -#: templates/js/translated/purchase_order.js:2226 -#: templates/js/translated/return_order.js:801 -#: templates/js/translated/sales_order.js:2025 +#: templates/js/translated/purchase_order.js:2225 +#: templates/js/translated/return_order.js:800 +#: templates/js/translated/sales_order.js:2061 msgid "Edit line item" msgstr "" -#: templates/js/translated/purchase_order.js:2227 -#: templates/js/translated/return_order.js:805 -#: templates/js/translated/sales_order.js:2031 +#: templates/js/translated/purchase_order.js:2226 +#: templates/js/translated/return_order.js:804 +#: templates/js/translated/sales_order.js:2067 msgid "Delete line item" msgstr "" -#: templates/js/translated/report.js:63 -msgid "items selected" +#: templates/js/translated/report.js:49 +msgid "Print Report" msgstr "" -#: templates/js/translated/report.js:71 -msgid "Select Report Template" +#: templates/js/translated/report.js:68 +msgid "Report print successful" 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" +#: templates/js/translated/report.js:73 +msgid "Report printing failed" msgstr "" #: templates/js/translated/return_order.js:60 @@ -12916,25 +12997,25 @@ msgstr "" msgid "Complete Return Order" msgstr "" -#: templates/js/translated/return_order.js:266 +#: templates/js/translated/return_order.js:265 msgid "No return orders found" msgstr "" -#: templates/js/translated/return_order.js:300 -#: templates/js/translated/sales_order.js:788 +#: templates/js/translated/return_order.js:299 +#: templates/js/translated/sales_order.js:824 msgid "Invalid Customer" msgstr "" -#: templates/js/translated/return_order.js:562 +#: templates/js/translated/return_order.js:561 msgid "Receive Return Order Items" msgstr "" -#: templates/js/translated/return_order.js:693 -#: templates/js/translated/sales_order.js:2231 +#: templates/js/translated/return_order.js:692 +#: templates/js/translated/sales_order.js:2267 msgid "No matching line items" msgstr "" -#: templates/js/translated/return_order.js:798 +#: templates/js/translated/return_order.js:797 msgid "Mark item as received" msgstr "" @@ -12978,140 +13059,156 @@ msgstr "" msgid "Skip" msgstr "" +#: templates/js/translated/sales_order.js:484 +msgid "Ship Sales Order" +msgstr "" + +#: templates/js/translated/sales_order.js:500 +msgid "Ship this order?" +msgstr "" + +#: templates/js/translated/sales_order.js:506 +msgid "Order cannot be shipped as there are incomplete shipments" +msgstr "" + #: templates/js/translated/sales_order.js:513 msgid "This order has line items which have not been completed." msgstr "" -#: templates/js/translated/sales_order.js:535 +#: templates/js/translated/sales_order.js:514 +msgid "Shipping this order means that the order and line items will no longer be editable." +msgstr "" + +#: templates/js/translated/sales_order.js:572 msgid "Issue this Sales Order?" msgstr "" -#: templates/js/translated/sales_order.js:540 +#: templates/js/translated/sales_order.js:577 msgid "Issue Sales Order" msgstr "" -#: templates/js/translated/sales_order.js:559 +#: templates/js/translated/sales_order.js:596 msgid "Cancel Sales Order" msgstr "" -#: templates/js/translated/sales_order.js:564 +#: templates/js/translated/sales_order.js:601 msgid "Cancelling this order means that the order will no longer be editable." msgstr "" -#: templates/js/translated/sales_order.js:618 +#: templates/js/translated/sales_order.js:655 msgid "Create New Shipment" msgstr "" -#: templates/js/translated/sales_order.js:728 +#: templates/js/translated/sales_order.js:764 msgid "No sales orders found" msgstr "" -#: templates/js/translated/sales_order.js:908 +#: templates/js/translated/sales_order.js:944 msgid "Edit shipment" msgstr "" -#: templates/js/translated/sales_order.js:911 +#: templates/js/translated/sales_order.js:947 msgid "Complete shipment" msgstr "" -#: templates/js/translated/sales_order.js:916 +#: templates/js/translated/sales_order.js:952 msgid "Delete shipment" msgstr "" -#: templates/js/translated/sales_order.js:933 +#: templates/js/translated/sales_order.js:969 msgid "Edit Shipment" msgstr "" -#: templates/js/translated/sales_order.js:948 +#: templates/js/translated/sales_order.js:984 msgid "Delete Shipment" msgstr "" -#: templates/js/translated/sales_order.js:981 +#: templates/js/translated/sales_order.js:1017 msgid "No matching shipments found" msgstr "" -#: templates/js/translated/sales_order.js:1006 +#: templates/js/translated/sales_order.js:1042 msgid "Shipment Reference" msgstr "" -#: templates/js/translated/sales_order.js:1030 -#: templates/js/translated/sales_order.js:1529 +#: templates/js/translated/sales_order.js:1066 +#: templates/js/translated/sales_order.js:1565 msgid "Not shipped" msgstr "" -#: templates/js/translated/sales_order.js:1048 +#: templates/js/translated/sales_order.js:1084 msgid "Tracking" msgstr "" -#: templates/js/translated/sales_order.js:1052 +#: templates/js/translated/sales_order.js:1088 msgid "Invoice" msgstr "" -#: templates/js/translated/sales_order.js:1219 +#: templates/js/translated/sales_order.js:1255 msgid "Add Shipment" msgstr "" -#: templates/js/translated/sales_order.js:1270 +#: templates/js/translated/sales_order.js:1306 msgid "Confirm stock allocation" msgstr "" -#: templates/js/translated/sales_order.js:1271 +#: templates/js/translated/sales_order.js:1307 msgid "Allocate Stock Items to Sales Order" msgstr "" -#: templates/js/translated/sales_order.js:1477 +#: templates/js/translated/sales_order.js:1513 msgid "No sales order allocations found" msgstr "" -#: templates/js/translated/sales_order.js:1569 +#: templates/js/translated/sales_order.js:1605 msgid "Edit Stock Allocation" msgstr "" -#: templates/js/translated/sales_order.js:1583 +#: templates/js/translated/sales_order.js:1619 msgid "Confirm Delete Operation" msgstr "" -#: templates/js/translated/sales_order.js:1584 +#: templates/js/translated/sales_order.js:1620 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 +#: templates/js/translated/sales_order.js:1659 +#: templates/js/translated/sales_order.js:1746 +#: templates/js/translated/stock.js:1776 msgid "Shipped to customer" msgstr "" -#: templates/js/translated/sales_order.js:1631 -#: templates/js/translated/sales_order.js:1719 +#: templates/js/translated/sales_order.js:1667 +#: templates/js/translated/sales_order.js:1755 msgid "Stock location not specified" msgstr "" -#: templates/js/translated/sales_order.js:2008 +#: templates/js/translated/sales_order.js:2044 msgid "Allocate serial numbers" msgstr "" -#: templates/js/translated/sales_order.js:2012 +#: templates/js/translated/sales_order.js:2048 msgid "Purchase stock" msgstr "" -#: templates/js/translated/sales_order.js:2021 -#: templates/js/translated/sales_order.js:2209 +#: templates/js/translated/sales_order.js:2057 +#: templates/js/translated/sales_order.js:2245 msgid "Calculate price" msgstr "" -#: templates/js/translated/sales_order.js:2035 +#: templates/js/translated/sales_order.js:2071 msgid "Cannot be deleted as items have been shipped" msgstr "" -#: templates/js/translated/sales_order.js:2038 +#: templates/js/translated/sales_order.js:2074 msgid "Cannot be deleted as items have been allocated" msgstr "" -#: templates/js/translated/sales_order.js:2109 +#: templates/js/translated/sales_order.js:2145 msgid "Allocate Serial Numbers" msgstr "" -#: templates/js/translated/sales_order.js:2217 +#: templates/js/translated/sales_order.js:2253 msgid "Update Unit Price" msgstr "" @@ -13319,7 +13416,7 @@ msgstr "" msgid "Add Stock" msgstr "" -#: templates/js/translated/stock.js:1042 users/models.py:414 +#: templates/js/translated/stock.js:1042 users/models.py:401 msgid "Add" msgstr "" @@ -13327,180 +13424,180 @@ msgstr "" msgid "Delete Stock" msgstr "" -#: templates/js/translated/stock.js:1143 +#: templates/js/translated/stock.js:1146 msgid "Quantity cannot be adjusted for serialized stock" msgstr "" -#: templates/js/translated/stock.js:1143 +#: templates/js/translated/stock.js:1146 msgid "Specify stock quantity" msgstr "" -#: templates/js/translated/stock.js:1177 templates/js/translated/stock.js:3299 +#: templates/js/translated/stock.js:1180 templates/js/translated/stock.js:3299 msgid "Select Stock Items" msgstr "" -#: templates/js/translated/stock.js:1178 +#: templates/js/translated/stock.js:1181 msgid "Select at least one available stock item" msgstr "" -#: templates/js/translated/stock.js:1224 +#: templates/js/translated/stock.js:1227 msgid "Confirm stock adjustment" msgstr "" -#: templates/js/translated/stock.js:1360 +#: templates/js/translated/stock.js:1363 msgid "PASS" msgstr "" -#: templates/js/translated/stock.js:1362 +#: templates/js/translated/stock.js:1365 msgid "FAIL" msgstr "" -#: templates/js/translated/stock.js:1367 +#: templates/js/translated/stock.js:1370 msgid "NO RESULT" msgstr "" -#: templates/js/translated/stock.js:1447 +#: templates/js/translated/stock.js:1450 msgid "Pass test" msgstr "" -#: templates/js/translated/stock.js:1450 +#: templates/js/translated/stock.js:1453 msgid "Add test result" msgstr "" -#: templates/js/translated/stock.js:1473 +#: templates/js/translated/stock.js:1476 msgid "No test results found" msgstr "" -#: templates/js/translated/stock.js:1537 +#: templates/js/translated/stock.js:1540 msgid "Test Date" msgstr "" -#: templates/js/translated/stock.js:1550 +#: templates/js/translated/stock.js:1553 msgid "Test started" msgstr "" -#: templates/js/translated/stock.js:1559 +#: templates/js/translated/stock.js:1562 msgid "Test finished" msgstr "" -#: templates/js/translated/stock.js:1713 +#: templates/js/translated/stock.js:1716 msgid "Edit Test Result" msgstr "" -#: templates/js/translated/stock.js:1733 +#: templates/js/translated/stock.js:1736 msgid "Delete Test Result" msgstr "" -#: templates/js/translated/stock.js:1765 +#: templates/js/translated/stock.js:1768 msgid "In production" msgstr "" -#: templates/js/translated/stock.js:1769 +#: templates/js/translated/stock.js:1772 msgid "Installed in Stock Item" msgstr "" -#: templates/js/translated/stock.js:1777 +#: templates/js/translated/stock.js:1780 msgid "Assigned to Sales Order" msgstr "" -#: templates/js/translated/stock.js:1783 +#: templates/js/translated/stock.js:1786 msgid "No stock location set" msgstr "" -#: templates/js/translated/stock.js:1839 +#: templates/js/translated/stock.js:1842 msgid "Change stock status" msgstr "" -#: templates/js/translated/stock.js:1848 +#: templates/js/translated/stock.js:1851 msgid "Merge stock" msgstr "" -#: templates/js/translated/stock.js:1897 +#: templates/js/translated/stock.js:1900 msgid "Delete stock" msgstr "" -#: templates/js/translated/stock.js:1952 +#: templates/js/translated/stock.js:1953 msgid "stock items" msgstr "" -#: templates/js/translated/stock.js:1957 +#: templates/js/translated/stock.js:1958 msgid "Scan to location" msgstr "" -#: templates/js/translated/stock.js:1968 +#: templates/js/translated/stock.js:1969 msgid "Stock Actions" msgstr "" -#: templates/js/translated/stock.js:2012 +#: templates/js/translated/stock.js:2013 msgid "Load installed items" msgstr "" -#: templates/js/translated/stock.js:2090 +#: templates/js/translated/stock.js:2091 msgid "Stock item is in production" msgstr "" -#: templates/js/translated/stock.js:2095 +#: templates/js/translated/stock.js:2096 msgid "Stock item assigned to sales order" msgstr "" -#: templates/js/translated/stock.js:2098 +#: templates/js/translated/stock.js:2099 msgid "Stock item assigned to customer" msgstr "" -#: templates/js/translated/stock.js:2101 +#: templates/js/translated/stock.js:2102 msgid "Serialized stock item has been allocated" msgstr "" -#: templates/js/translated/stock.js:2103 +#: templates/js/translated/stock.js:2104 msgid "Stock item has been fully allocated" msgstr "" -#: templates/js/translated/stock.js:2105 +#: templates/js/translated/stock.js:2106 msgid "Stock item has been partially allocated" msgstr "" -#: templates/js/translated/stock.js:2108 +#: templates/js/translated/stock.js:2109 msgid "Stock item has been installed in another item" msgstr "" -#: templates/js/translated/stock.js:2110 +#: templates/js/translated/stock.js:2111 msgid "Stock item has been consumed by a build order" msgstr "" -#: templates/js/translated/stock.js:2114 +#: templates/js/translated/stock.js:2115 msgid "Stock item has expired" msgstr "" -#: templates/js/translated/stock.js:2116 +#: templates/js/translated/stock.js:2117 msgid "Stock item will expire soon" msgstr "" -#: templates/js/translated/stock.js:2121 +#: templates/js/translated/stock.js:2122 msgid "Stock item has been rejected" msgstr "" -#: templates/js/translated/stock.js:2123 +#: templates/js/translated/stock.js:2124 msgid "Stock item is lost" msgstr "" -#: templates/js/translated/stock.js:2125 +#: templates/js/translated/stock.js:2126 msgid "Stock item is destroyed" msgstr "" -#: templates/js/translated/stock.js:2129 +#: templates/js/translated/stock.js:2130 #: templates/js/translated/table_filters.js:350 msgid "Depleted" msgstr "" -#: templates/js/translated/stock.js:2294 +#: templates/js/translated/stock.js:2295 msgid "Supplier part not specified" msgstr "" -#: templates/js/translated/stock.js:2341 +#: templates/js/translated/stock.js:2342 msgid "Stock Value" msgstr "" -#: templates/js/translated/stock.js:2469 +#: templates/js/translated/stock.js:2470 msgid "No stock items matching query" msgstr "" @@ -13973,6 +14070,22 @@ msgstr "" msgid "Show all notifications and history" msgstr "" +#: templates/pui_banner.html:9 +msgid "Platform UI - the new UI for InvenTree - provides more modern administration options." +msgstr "" + +#: templates/pui_banner.html:12 +msgid "Platform UI - the new UI for InvenTree - is ready to be tested." +msgstr "" + +#: templates/pui_banner.html:15 +msgid "Try it out now" +msgstr "" + +#: templates/pui_banner.html:15 +msgid "here" +msgstr "" + #: templates/qr_code.html:11 msgid "QR data not provided" msgstr "" @@ -14194,35 +14307,34 @@ msgstr "" msgid "Revoked" msgstr "" -#: users/models.py:397 +#: users/models.py:384 msgid "Permission set" msgstr "Nastavení oprávnění" -#: users/models.py:406 +#: users/models.py:393 msgid "Group" msgstr "Skupina" -#: users/models.py:410 +#: users/models.py:397 msgid "View" msgstr "Zobrazit" -#: users/models.py:410 +#: users/models.py:397 msgid "Permission to view items" msgstr "Oprávnění k zobrazení položek" -#: users/models.py:414 +#: users/models.py:401 msgid "Permission to add items" msgstr "Oprávnění přidat položky" -#: users/models.py:418 +#: users/models.py:405 msgid "Change" msgstr "Změnit" -#: users/models.py:420 +#: users/models.py:407 msgid "Permissions to edit items" msgstr "Oprávnění k úpravě položek" -#: users/models.py:426 +#: users/models.py:413 msgid "Permission to delete items" msgstr "Oprávnění k odstranění položek" - diff --git a/src/backend/InvenTree/locale/da/LC_MESSAGES/django.po b/src/backend/InvenTree/locale/da/LC_MESSAGES/django.po index 25c8b552c6..9938f22e73 100644 --- a/src/backend/InvenTree/locale/da/LC_MESSAGES/django.po +++ b/src/backend/InvenTree/locale/da/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-04-20 13:19+0000\n" -"PO-Revision-Date: 2024-04-21 04:19\n" +"POT-Creation-Date: 2024-05-31 07:08+0000\n" +"PO-Revision-Date: 2024-05-27 11:54\n" "Last-Translator: \n" "Language-Team: Danish\n" "Language: da_DK\n" @@ -17,11 +17,11 @@ msgstr "" "X-Crowdin-File: /[inventree.InvenTree] l10/src/backend/InvenTree/locale/en/LC_MESSAGES/django.po\n" "X-Crowdin-File-ID: 216\n" -#: InvenTree/api.py:255 +#: InvenTree/api.py:272 msgid "API endpoint not found" msgstr "API endpoint ikke fundet" -#: InvenTree/api.py:519 +#: InvenTree/api.py:536 msgid "User does not have permission to view this model" msgstr "Bruger har ikke tilladelse til at se denne model" @@ -56,26 +56,26 @@ msgstr "Fejloplysninger kan findes i admin panelet" msgid "Enter date" msgstr "Angiv dato" -#: InvenTree/fields.py:208 InvenTree/models.py:1021 build/serializers.py:438 -#: build/serializers.py:516 build/templates/build/sidebar.html:21 -#: company/models.py:847 company/templates/company/sidebar.html:37 -#: order/models.py:1283 order/templates/order/po_sidebar.html:11 +#: InvenTree/fields.py:208 InvenTree/models.py:1035 build/serializers.py:453 +#: build/serializers.py:531 build/templates/build/sidebar.html:21 +#: company/models.py:849 company/templates/company/sidebar.html:37 +#: order/models.py:1332 order/templates/order/po_sidebar.html:11 #: order/templates/order/return_order_sidebar.html:9 #: order/templates/order/so_sidebar.html:17 part/admin.py:59 -#: part/models.py:3175 part/templates/part/part_sidebar.html:63 -#: report/templates/report/inventree_build_order_base.html:172 -#: stock/admin.py:226 stock/models.py:2332 stock/models.py:2449 -#: 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 +#: part/models.py:3218 part/templates/part/part_sidebar.html:63 +#: report/templates/report/inventree_build_order_report.html:172 +#: stock/admin.py:226 stock/models.py:2325 stock/models.py:2442 +#: stock/serializers.py:630 stock/serializers.py:788 stock/serializers.py:884 +#: stock/serializers.py:934 stock/serializers.py:1243 stock/serializers.py:1332 +#: stock/serializers.py:1497 stock/templates/stock/stock_sidebar.html:25 #: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1265 #: templates/js/translated/company.js:1684 templates/js/translated/order.js:347 #: templates/js/translated/part.js:1080 -#: templates/js/translated/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 +#: templates/js/translated/purchase_order.js:2200 +#: templates/js/translated/return_order.js:775 +#: templates/js/translated/sales_order.js:1103 +#: templates/js/translated/sales_order.js:2018 +#: templates/js/translated/stock.js:1536 templates/js/translated/stock.js:2428 msgid "Notes" msgstr "Bemærkninger" @@ -132,7 +132,7 @@ msgstr "Det angivne e-mail domæne er ikke godkendt." msgid "Registration is disabled." msgstr "Registrering er deaktiveret." -#: InvenTree/helpers.py:525 order/models.py:541 order/models.py:743 +#: InvenTree/helpers.py:525 order/models.py:562 order/models.py:764 msgid "Invalid quantity provided" msgstr "Ugyldigt antal angivet" @@ -324,14 +324,18 @@ msgid "Turkish" msgstr "Tyrkisk" #: InvenTree/locales.py:48 +msgid "Ukrainian" +msgstr "" + +#: InvenTree/locales.py:49 msgid "Vietnamese" msgstr "Vietnamesisk" -#: InvenTree/locales.py:49 +#: InvenTree/locales.py:50 msgid "Chinese (Simplified)" msgstr "Kinesisk (forenklet)" -#: InvenTree/locales.py:50 +#: InvenTree/locales.py:51 msgid "Chinese (Traditional)" msgstr "Kinesisk (traditionelt)" @@ -351,145 +355,145 @@ msgstr "E-mail" msgid "Error running plugin validation" msgstr "" -#: InvenTree/models.py:162 +#: InvenTree/models.py:176 msgid "Metadata must be a python dict object" msgstr "Metadata skal være et python dict objekt" -#: InvenTree/models.py:168 +#: InvenTree/models.py:182 msgid "Plugin Metadata" msgstr "" -#: InvenTree/models.py:169 +#: InvenTree/models.py:183 msgid "JSON metadata field, for use by external plugins" msgstr "JSON metadata felt, til brug af eksterne plugins" -#: InvenTree/models.py:399 +#: InvenTree/models.py:413 msgid "Improperly formatted pattern" msgstr "Forkert formateret mønster" -#: InvenTree/models.py:406 +#: InvenTree/models.py:420 msgid "Unknown format key specified" msgstr "Ukendt formatnøgle angivet" -#: InvenTree/models.py:412 +#: InvenTree/models.py:426 msgid "Missing required format key" msgstr "Mangler nødvendig formatnøgle" -#: InvenTree/models.py:423 +#: InvenTree/models.py:437 msgid "Reference field cannot be empty" msgstr "Referencefelt må ikke være tomt" -#: InvenTree/models.py:431 +#: InvenTree/models.py:445 msgid "Reference must match required pattern" msgstr "Reference skal matche det påkrævede mønster" -#: InvenTree/models.py:462 +#: InvenTree/models.py:476 msgid "Reference number is too large" msgstr "Referencenummer er for stort" -#: InvenTree/models.py:536 +#: InvenTree/models.py:550 msgid "Missing file" msgstr "Manglende fil" -#: InvenTree/models.py:537 +#: InvenTree/models.py:551 msgid "Missing external link" msgstr "Manglende eksternt link" -#: InvenTree/models.py:558 stock/models.py:2444 +#: InvenTree/models.py:572 stock/models.py:2437 #: templates/js/translated/attachment.js:119 #: templates/js/translated/attachment.js:326 msgid "Attachment" msgstr "Vedhæftning" -#: InvenTree/models.py:559 +#: InvenTree/models.py:573 msgid "Select file to attach" msgstr "Vælg fil, der skal vedhæftes" -#: InvenTree/models.py:567 common/models.py:3018 company/models.py:146 -#: company/models.py:457 company/models.py:514 company/models.py:830 -#: order/models.py:291 order/models.py:1288 order/models.py:1702 -#: part/admin.py:55 part/models.py:919 +#: InvenTree/models.py:581 common/models.py:3041 company/models.py:146 +#: company/models.py:457 company/models.py:514 company/models.py:831 +#: order/models.py:303 order/models.py:1337 order/models.py:1753 +#: part/admin.py:55 part/models.py:962 #: part/templates/part/part_scheduling.html:11 -#: report/templates/report/inventree_build_order_base.html:164 +#: report/templates/report/inventree_build_order_report.html:164 #: stock/admin.py:225 templates/js/translated/company.js:1319 #: templates/js/translated/company.js:1673 templates/js/translated/order.js:351 -#: templates/js/translated/part.js: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 +#: templates/js/translated/part.js:2455 +#: templates/js/translated/purchase_order.js:2040 +#: templates/js/translated/purchase_order.js:2204 +#: templates/js/translated/return_order.js:779 +#: templates/js/translated/sales_order.js:1092 +#: templates/js/translated/sales_order.js:2023 msgid "Link" msgstr "" -#: InvenTree/models.py:568 build/models.py:315 part/models.py:920 -#: stock/models.py:819 +#: InvenTree/models.py:582 build/models.py:345 part/models.py:963 +#: stock/models.py:836 msgid "Link to external URL" msgstr "Link til ekstern URL" -#: InvenTree/models.py:574 templates/js/translated/attachment.js:120 +#: InvenTree/models.py:588 templates/js/translated/attachment.js:120 #: templates/js/translated/attachment.js:341 msgid "Comment" msgstr "Kommentar" -#: InvenTree/models.py:575 +#: InvenTree/models.py:589 msgid "File comment" msgstr "Fil kommentar" -#: InvenTree/models.py:583 InvenTree/models.py:584 common/models.py:2494 -#: common/models.py:2495 common/models.py:2719 common/models.py:2720 -#: common/models.py:2965 common/models.py:2966 part/models.py:3185 -#: part/models.py:3272 part/models.py:3365 part/models.py:3393 -#: plugin/models.py:250 plugin/models.py:251 -#: report/templates/report/inventree_test_report_base.html:105 +#: InvenTree/models.py:597 InvenTree/models.py:598 common/models.py:2517 +#: common/models.py:2518 common/models.py:2742 common/models.py:2743 +#: common/models.py:2988 common/models.py:2989 part/models.py:3228 +#: part/models.py:3315 part/models.py:3408 part/models.py:3436 +#: plugin/models.py:259 plugin/models.py:260 +#: report/templates/report/inventree_test_report.html:105 #: templates/js/translated/stock.js:3036 users/models.py:111 msgid "User" msgstr "Bruger" -#: InvenTree/models.py:588 +#: InvenTree/models.py:602 msgid "upload date" msgstr "dato for upload" -#: InvenTree/models.py:610 +#: InvenTree/models.py:624 msgid "Filename must not be empty" msgstr "Filnavn må ikke være tomt" -#: InvenTree/models.py:621 +#: InvenTree/models.py:635 msgid "Invalid attachment directory" msgstr "Ugyldig vedhæftningsmappe" -#: InvenTree/models.py:651 +#: InvenTree/models.py:665 #, python-brace-format msgid "Filename contains illegal character '{c}'" msgstr "Filnavn indeholder ugyldigt tegn '{c}'" -#: InvenTree/models.py:654 +#: InvenTree/models.py:668 msgid "Filename missing extension" msgstr "Filnavn mangler filtype" -#: InvenTree/models.py:663 +#: InvenTree/models.py:677 msgid "Attachment with this filename already exists" msgstr "Vedhæftning med dette filnavn findes allerede" -#: InvenTree/models.py:670 +#: InvenTree/models.py:684 msgid "Error renaming file" msgstr "Fejl ved omdøbning af fil" -#: InvenTree/models.py:846 +#: InvenTree/models.py:860 msgid "Duplicate names cannot exist under the same parent" msgstr "" -#: InvenTree/models.py:863 +#: InvenTree/models.py:877 msgid "Invalid choice" msgstr "Ugyldigt valg" -#: InvenTree/models.py:893 common/models.py:2706 common/models.py:3104 -#: common/serializers.py:370 company/models.py:613 label/models.py:120 -#: machine/models.py:24 part/models.py:855 part/models.py:3616 -#: plugin/models.py:41 report/models.py:176 stock/models.py:76 +#: InvenTree/models.py:907 common/models.py:2729 common/models.py:3127 +#: common/serializers.py:403 company/models.py:614 machine/models.py:24 +#: part/models.py:898 part/models.py:3659 plugin/models.py:50 +#: report/models.py:149 stock/models.py:72 #: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/notifications.html:17 -#: templates/InvenTree/settings/plugin.html:81 +#: templates/InvenTree/settings/plugin.html:83 #: templates/InvenTree/settings/plugin_settings.html:22 #: templates/InvenTree/settings/settings_staff_js.html:67 #: templates/InvenTree/settings/settings_staff_js.html:446 @@ -499,98 +503,98 @@ msgstr "Ugyldigt valg" #: templates/js/translated/company.js:1165 #: templates/js/translated/company.js:1413 templates/js/translated/part.js:1186 #: templates/js/translated/part.js:1474 templates/js/translated/part.js:1610 -#: templates/js/translated/part.js:2749 templates/js/translated/stock.js:2716 +#: templates/js/translated/part.js:2748 templates/js/translated/stock.js:2716 msgid "Name" msgstr "Navn" -#: InvenTree/models.py:899 build/models.py:188 +#: InvenTree/models.py:913 build/models.py:218 #: build/templates/build/detail.html:24 common/models.py:136 -#: company/models.py:522 company/models.py:838 +#: company/models.py:523 company/models.py:840 #: company/templates/company/company_base.html:77 #: company/templates/company/manufacturer_part.html:75 -#: company/templates/company/supplier_part.html:107 label/models.py:127 -#: order/models.py:277 order/models.py:1316 part/admin.py:303 part/admin.py:414 -#: part/models.py:878 part/models.py:3631 part/templates/part/category.html:82 +#: company/templates/company/supplier_part.html:107 order/models.py:289 +#: order/models.py:1365 part/admin.py:305 part/admin.py:416 part/models.py:921 +#: part/models.py:3674 part/templates/part/category.html:82 #: part/templates/part/part_base.html:170 -#: part/templates/part/part_scheduling.html:12 report/models.py:189 -#: report/models.py:655 report/models.py:729 -#: report/templates/report/inventree_build_order_base.html:117 -#: stock/admin.py:55 stock/models.py:82 stock/templates/stock/location.html:125 +#: part/templates/part/part_scheduling.html:12 report/models.py:155 +#: report/models.py:509 report/models.py:535 +#: report/templates/report/inventree_build_order_report.html:117 +#: stock/admin.py:55 stock/models.py:78 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:519 +#: templates/js/translated/build.js:2139 templates/js/translated/company.js:519 #: templates/js/translated/company.js:1330 #: templates/js/translated/company.js:1641 templates/js/translated/index.js:119 #: templates/js/translated/order.js:298 templates/js/translated/part.js:1238 #: templates/js/translated/part.js:1483 templates/js/translated/part.js:1621 -#: templates/js/translated/part.js:1958 templates/js/translated/part.js:2355 -#: templates/js/translated/part.js:2785 templates/js/translated/part.js:2896 +#: templates/js/translated/part.js:1958 templates/js/translated/part.js:2354 +#: templates/js/translated/part.js:2784 templates/js/translated/part.js:2895 #: templates/js/translated/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/purchase_order.js:1706 +#: templates/js/translated/purchase_order.js:1849 +#: templates/js/translated/purchase_order.js:2022 +#: templates/js/translated/return_order.js:313 +#: templates/js/translated/sales_order.js:838 +#: templates/js/translated/sales_order.js:1848 +#: templates/js/translated/stock.js:1515 templates/js/translated/stock.js:2058 #: templates/js/translated/stock.js:2748 templates/js/translated/stock.js:2831 msgid "Description" msgstr "Beskrivelse" -#: InvenTree/models.py:900 stock/models.py:83 +#: InvenTree/models.py:914 stock/models.py:79 msgid "Description (optional)" msgstr "Beskrivelse (valgfri)" -#: InvenTree/models.py:909 +#: InvenTree/models.py:923 msgid "parent" msgstr "overordnet" -#: InvenTree/models.py:915 templates/js/translated/part.js:2794 +#: InvenTree/models.py:929 templates/js/translated/part.js:2793 #: templates/js/translated/stock.js:2757 msgid "Path" msgstr "Sti" -#: InvenTree/models.py:1021 +#: InvenTree/models.py:1035 msgid "Markdown notes (optional)" msgstr "Markdown noter (valgfri)" -#: InvenTree/models.py:1050 +#: InvenTree/models.py:1064 msgid "Barcode Data" msgstr "Stregkode Data" -#: InvenTree/models.py:1051 +#: InvenTree/models.py:1065 msgid "Third party barcode data" msgstr "Tredjeparts stregkode data" -#: InvenTree/models.py:1057 +#: InvenTree/models.py:1071 msgid "Barcode Hash" msgstr "Stregkode Hash" -#: InvenTree/models.py:1058 +#: InvenTree/models.py:1072 msgid "Unique hash of barcode data" msgstr "Unik hash af stregkode data" -#: InvenTree/models.py:1111 +#: InvenTree/models.py:1125 msgid "Existing barcode found" msgstr "Eksisterende stregkode fundet" -#: InvenTree/models.py:1154 +#: InvenTree/models.py:1168 msgid "Server Error" msgstr "Serverfejl" -#: InvenTree/models.py:1155 +#: InvenTree/models.py:1169 msgid "An error has been logged by the server." msgstr "En fejl blev logget af serveren." -#: InvenTree/serializers.py:62 part/models.py:4169 +#: InvenTree/serializers.py:62 part/models.py:4212 msgid "Must be a valid number" msgstr "Skal være et gyldigt tal" #: InvenTree/serializers.py:99 company/models.py:183 -#: company/templates/company/company_base.html:112 part/models.py:2993 +#: company/templates/company/company_base.html:112 part/models.py:3036 #: templates/InvenTree/settings/settings_staff_js.html:44 #: templates/currency_data.html:5 msgid "Currency" @@ -682,7 +686,7 @@ msgstr "URL til ekstern billedfil" 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:1161 +#: InvenTree/status.py:66 part/serializers.py:1178 msgid "Background worker check failed" msgstr "Kontrol af baggrundstjeneste mislykkedes" @@ -694,202 +698,6 @@ msgstr "E-mail backend ej konfigureret" msgid "InvenTree system health checks failed" msgstr "Helbredstjek af InvenTree system mislykkedes" -#: 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 "Afventende" - -#: InvenTree/status_codes.py:13 generic/states/tests.py:18 -msgid "Placed" -msgstr "Placeret" - -#: 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 "Fuldført" - -#: InvenTree/status_codes.py:15 InvenTree/status_codes.py:44 -#: InvenTree/status_codes.py:150 InvenTree/status_codes.py:170 -msgid "Cancelled" -msgstr "Annulleret" - -#: InvenTree/status_codes.py:16 InvenTree/status_codes.py:45 -#: InvenTree/status_codes.py:67 -msgid "Lost" -msgstr "Mistet" - -#: InvenTree/status_codes.py:17 InvenTree/status_codes.py:46 -#: InvenTree/status_codes.py:73 -msgid "Returned" -msgstr "Returneret" - -#: InvenTree/status_codes.py:40 InvenTree/status_codes.py:167 -msgid "In Progress" -msgstr "Igangværende" - -#: InvenTree/status_codes.py:43 order/models.py:1564 -#: templates/js/translated/sales_order.js:1523 -#: templates/js/translated/sales_order.js:1644 -#: templates/js/translated/sales_order.js:1957 -msgid "Shipped" -msgstr "Afsendt" - -#: InvenTree/status_codes.py:62 -msgid "OK" -msgstr "" - -#: InvenTree/status_codes.py:63 -msgid "Attention needed" -msgstr "Opmærksomhed påkrævet" - -#: InvenTree/status_codes.py:64 -msgid "Damaged" -msgstr "Beskadiget" - -#: InvenTree/status_codes.py:65 -msgid "Destroyed" -msgstr "Destrueret" - -#: InvenTree/status_codes.py:66 -msgid "Rejected" -msgstr "Afvist" - -#: InvenTree/status_codes.py:70 -msgid "Quarantined" -msgstr "I karantæne" - -#: InvenTree/status_codes.py:91 -msgid "Legacy stock tracking entry" -msgstr "Forældet lager sporings post" - -#: InvenTree/status_codes.py:93 templates/js/translated/stock.js:544 -msgid "Stock item created" -msgstr "Lager-element oprettet" - -#: InvenTree/status_codes.py:96 -msgid "Edited stock item" -msgstr "Redigeret lager-element" - -#: InvenTree/status_codes.py:97 -msgid "Assigned serial number" -msgstr "Serienummer tildelt" - -#: InvenTree/status_codes.py:100 -msgid "Stock counted" -msgstr "Lagerbeholdning optalt" - -#: InvenTree/status_codes.py:101 -msgid "Stock manually added" -msgstr "Lagerbeholdning tilføjet manuelt" - -#: InvenTree/status_codes.py:102 -msgid "Stock manually removed" -msgstr "Lagerbeholdning fjernet manuelt" - -#: InvenTree/status_codes.py:105 -msgid "Location changed" -msgstr "Lokation ændret" - -#: InvenTree/status_codes.py:106 -msgid "Stock updated" -msgstr "Lager opdateret" - -#: InvenTree/status_codes.py:109 -msgid "Installed into assembly" -msgstr "Monteret i samling" - -#: InvenTree/status_codes.py:110 -msgid "Removed from assembly" -msgstr "Fjernet fra samling" - -#: InvenTree/status_codes.py:112 -msgid "Installed component item" -msgstr "Installeret komponent element" - -#: InvenTree/status_codes.py:113 -msgid "Removed component item" -msgstr "Fjernet komponent element" - -#: InvenTree/status_codes.py:116 -msgid "Split from parent item" -msgstr "Opdel fra overordnet element" - -#: InvenTree/status_codes.py:117 -msgid "Split child item" -msgstr "Opdel underordnet element" - -#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:1855 -msgid "Merged stock items" -msgstr "Flettede lagervarer" - -#: InvenTree/status_codes.py:123 -msgid "Converted to variant" -msgstr "Konverteret til variant" - -#: InvenTree/status_codes.py:126 -msgid "Build order output created" -msgstr "Byggeordre output genereret" - -#: InvenTree/status_codes.py:127 -msgid "Build order output completed" -msgstr "Byggeorder output fuldført" - -#: 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 "Brugt efter byggeordre" - -#: InvenTree/status_codes.py:132 -msgid "Shipped against Sales Order" -msgstr "Afsendt mod salgsordre" - -#: InvenTree/status_codes.py:135 -msgid "Received against Purchase Order" -msgstr "Modtaget mod indkøbsordre" - -#: InvenTree/status_codes.py:138 -msgid "Returned against Return Order" -msgstr "Returneret mod returordre" - -#: InvenTree/status_codes.py:141 templates/js/translated/table_filters.js:375 -msgid "Sent to customer" -msgstr "Sendt til kunde" - -#: InvenTree/status_codes.py:142 -msgid "Returned from customer" -msgstr "Returneret fra kunde" - -#: InvenTree/status_codes.py:149 -msgid "Production" -msgstr "Produktion" - -#: InvenTree/status_codes.py:185 -msgid "Return" -msgstr "Retur" - -#: InvenTree/status_codes.py:188 -msgid "Repair" -msgstr "Reparér" - -#: InvenTree/status_codes.py:191 -msgid "Replace" -msgstr "Erstat" - -#: InvenTree/status_codes.py:194 -msgid "Refund" -msgstr "Refusion" - -#: InvenTree/status_codes.py:197 -msgid "Reject" -msgstr "Afvis" - #: InvenTree/templatetags/inventree_extras.py:183 msgid "Unknown database" msgstr "Ukendt database" @@ -938,45 +746,45 @@ msgstr "Systemoplysninger" msgid "About InvenTree" msgstr "Om InvenTree" -#: build/api.py:238 +#: build/api.py:255 msgid "Build must be cancelled before it can be deleted" msgstr "Produktion skal anulleres, før den kan slettes" -#: build/api.py:282 part/models.py:4047 templates/js/translated/bom.js:997 -#: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2521 +#: build/api.py:299 part/models.py:4090 templates/js/translated/bom.js:997 +#: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2520 #: templates/js/translated/table_filters.js:190 #: templates/js/translated/table_filters.js:583 msgid "Consumable" msgstr "Forbrugsvare" -#: build/api.py:283 part/models.py:4041 part/templates/part/upload_bom.html:58 +#: build/api.py:300 part/models.py:4084 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/build.js:2529 #: templates/js/translated/table_filters.js:186 #: templates/js/translated/table_filters.js:215 #: templates/js/translated/table_filters.js:587 msgid "Optional" msgstr "Valgfri" -#: build/api.py:284 templates/js/translated/table_filters.js:408 +#: build/api.py:301 templates/js/translated/table_filters.js:408 #: templates/js/translated/table_filters.js:579 msgid "Tracked" msgstr "Sporet" -#: build/api.py:286 part/admin.py:144 templates/js/translated/build.js:1741 -#: templates/js/translated/build.js:2630 -#: templates/js/translated/sales_order.js:1929 +#: build/api.py:303 part/admin.py:144 templates/js/translated/build.js:1744 +#: templates/js/translated/build.js:2629 +#: templates/js/translated/sales_order.js:1965 #: templates/js/translated/table_filters.js:571 msgid "Allocated" msgstr "Allokeret" -#: build/api.py:294 company/models.py:902 company/serializers.py:383 +#: build/api.py:311 company/models.py:904 company/serializers.py:383 #: 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/bom.js:1162 templates/js/translated/build.js:2561 #: templates/js/translated/index.js:123 -#: templates/js/translated/model_renderers.js:228 +#: templates/js/translated/model_renderers.js:234 #: templates/js/translated/part.js:692 templates/js/translated/part.js:694 #: templates/js/translated/part.js:699 #: templates/js/translated/table_filters.js:340 @@ -984,16 +792,16 @@ msgstr "Allokeret" msgid "Available" msgstr "Tilgængelig" -#: build/models.py:74 build/templates/build/build_base.html:9 +#: build/models.py:83 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 +#: report/templates/report/inventree_build_order_report.html:105 +#: stock/serializers.py:83 templates/email/build_order_completed.html:16 #: templates/email/overdue_build_order.html:15 #: templates/js/translated/build.js:972 templates/js/translated/stock.js:2892 msgid "Build Order" msgstr "Produktionsordre" -#: build/models.py:75 build/templates/build/build_base.html:13 +#: build/models.py:84 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 @@ -1004,708 +812,751 @@ msgstr "Produktionsordre" msgid "Build Orders" msgstr "Produktionsordrer" -#: build/models.py:116 +#: build/models.py:131 msgid "Invalid choice for parent build" msgstr "Ugyldigt valg for overordnet produktion" -#: build/models.py:127 order/models.py:239 +#: build/models.py:142 order/models.py:240 msgid "Responsible user or group must be specified" msgstr "" -#: build/models.py:133 +#: build/models.py:148 msgid "Build order part cannot be changed" msgstr "Byggeordre enhed kan ikke ændres" -#: build/models.py:179 +#: build/models.py:209 msgid "Build Order Reference" msgstr "Produktionsordre reference" -#: build/models.py:180 order/models.py:442 order/models.py:898 -#: order/models.py:1276 order/models.py:1996 part/admin.py:417 -#: part/models.py:4062 part/templates/part/upload_bom.html:54 +#: build/models.py:210 order/models.py:463 order/models.py:928 +#: order/models.py:1325 order/models.py:2056 part/admin.py:419 +#: part/models.py:4105 part/templates/part/upload_bom.html:54 #: 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 +#: report/templates/report/inventree_purchase_order_report.html:28 +#: report/templates/report/inventree_return_order_report.html:26 +#: report/templates/report/inventree_sales_order_report.html:28 #: templates/js/translated/bom.js:770 templates/js/translated/bom.js:973 -#: templates/js/translated/build.js:2513 templates/js/translated/order.js:291 +#: templates/js/translated/build.js:2512 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 +#: templates/js/translated/purchase_order.js:2065 +#: templates/js/translated/return_order.js:728 +#: templates/js/translated/sales_order.js:1854 msgid "Reference" msgstr "" -#: build/models.py:191 +#: build/models.py:221 msgid "Brief description of the build (optional)" msgstr "" -#: build/models.py:199 build/templates/build/build_base.html:183 +#: build/models.py:229 build/templates/build/build_base.html:183 #: build/templates/build/detail.html:87 msgid "Parent Build" msgstr "Overordnet produktion" -#: build/models.py:200 +#: build/models.py:230 msgid "BuildOrder to which this build is allocated" msgstr "Produktionsordre som er tildelt denne produktion" -#: build/models.py:205 build/templates/build/build_base.html:97 -#: build/templates/build/detail.html:29 company/models.py:1056 order/api.py:817 -#: order/models.py:1401 order/models.py:1544 order/models.py:1545 -#: part/api.py:1547 part/api.py:1841 part/models.py:390 part/models.py:3004 -#: part/models.py:3148 part/models.py:3292 part/models.py:3315 -#: part/models.py:3336 part/models.py:3358 part/models.py:3468 -#: part/models.py:3764 part/models.py:3920 part/models.py:4013 -#: part/models.py:4374 part/serializers.py:1107 part/serializers.py:1713 +#: build/models.py:235 build/templates/build/build_base.html:97 +#: build/templates/build/detail.html:29 company/models.py:1058 order/api.py:821 +#: order/models.py:1450 order/models.py:1595 order/models.py:1596 +#: part/api.py:1501 part/api.py:1795 part/models.py:392 part/models.py:3047 +#: part/models.py:3191 part/models.py:3335 part/models.py:3358 +#: part/models.py:3379 part/models.py:3401 part/models.py:3511 +#: part/models.py:3807 part/models.py:3963 part/models.py:4056 +#: part/models.py:4417 part/serializers.py:1124 part/serializers.py:1730 #: 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 +#: report/templates/report/inventree_build_order_report.html:109 +#: report/templates/report/inventree_purchase_order_report.html:27 +#: report/templates/report/inventree_return_order_report.html:24 +#: report/templates/report/inventree_sales_order_report.html:27 +#: report/templates/report/inventree_stock_location_report.html:102 +#: stock/serializers.py:110 stock/serializers.py:158 stock/serializers.py:396 +#: stock/serializers.py:818 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/build.js:1312 templates/js/translated/build.js:1743 +#: templates/js/translated/build.js:2162 templates/js/translated/build.js:2335 #: templates/js/translated/company.js:348 #: templates/js/translated/company.js:1116 #: templates/js/translated/company.js:1271 #: templates/js/translated/company.js:1559 templates/js/translated/index.js:109 #: templates/js/translated/part.js:1943 templates/js/translated/part.js:2015 -#: templates/js/translated/part.js:2324 templates/js/translated/pricing.js:369 +#: templates/js/translated/part.js:2323 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/purchase_order.js:1848 +#: templates/js/translated/purchase_order.js:2007 +#: templates/js/translated/return_order.js:538 +#: templates/js/translated/return_order.js:709 #: templates/js/translated/sales_order.js:300 -#: templates/js/translated/sales_order.js:1197 -#: templates/js/translated/sales_order.js:1598 -#: templates/js/translated/sales_order.js:1796 +#: templates/js/translated/sales_order.js:1233 +#: templates/js/translated/sales_order.js:1634 +#: templates/js/translated/sales_order.js:1832 #: templates/js/translated/stock.js:676 templates/js/translated/stock.js:842 -#: templates/js/translated/stock.js:1058 templates/js/translated/stock.js:1996 +#: templates/js/translated/stock.js:1058 templates/js/translated/stock.js:1997 #: templates/js/translated/stock.js:2857 templates/js/translated/stock.js:3090 #: templates/js/translated/stock.js:3236 msgid "Part" msgstr "Del" -#: build/models.py:213 +#: build/models.py:243 msgid "Select part to build" msgstr "Vælg dele til produktion" -#: build/models.py:218 +#: build/models.py:248 msgid "Sales Order Reference" msgstr "Salgsordrereference" -#: build/models.py:222 +#: build/models.py:252 msgid "SalesOrder to which this build is allocated" msgstr "Salgsordre, som er tildelt denne produktion" -#: build/models.py:227 build/serializers.py:964 -#: templates/js/translated/build.js:1728 -#: templates/js/translated/sales_order.js:1185 +#: build/models.py:257 build/serializers.py:1000 +#: templates/js/translated/build.js:1731 +#: templates/js/translated/sales_order.js:1221 msgid "Source Location" msgstr "Kilde Lokation" -#: build/models.py:231 +#: build/models.py:261 msgid "Select location to take stock from for this build (leave blank to take from any stock location)" msgstr "Vælg lokation for lager, som skal benyttes til denne produktion (lad feltet stå tomt for at benytte vilkårligt lager)" -#: build/models.py:236 +#: build/models.py:266 msgid "Destination Location" msgstr "Destinations Placering" -#: build/models.py:240 +#: build/models.py:270 msgid "Select location where the completed items will be stored" msgstr "Vælg placering, hvor de færdige elementer vil blive gemt" -#: build/models.py:244 +#: build/models.py:274 msgid "Build Quantity" msgstr "Produktions antal" -#: build/models.py:247 +#: build/models.py:277 msgid "Number of stock items to build" msgstr "Antal lagervarer som skal produceres" -#: build/models.py:251 +#: build/models.py:281 msgid "Completed items" msgstr "Afsluttede elementer" -#: build/models.py:253 +#: build/models.py:283 msgid "Number of stock items which have been completed" msgstr "Antal lagervarer som er færdiggjort" -#: build/models.py:257 +#: build/models.py:287 msgid "Build Status" msgstr "Produktions Status" -#: build/models.py:261 +#: build/models.py:291 msgid "Build status code" msgstr "Produktions statuskode" -#: build/models.py:270 build/serializers.py:280 order/serializers.py:577 -#: stock/models.py:823 stock/serializers.py:1333 +#: build/models.py:300 build/serializers.py:287 order/serializers.py:581 +#: stock/models.py:840 stock/serializers.py:75 stock/serializers.py:1462 #: templates/js/translated/purchase_order.js:1129 msgid "Batch Code" msgstr "Batch Kode" -#: build/models.py:274 build/serializers.py:281 +#: build/models.py:304 build/serializers.py:288 msgid "Batch code for this build output" msgstr "Batch kode til dette produktions output" -#: build/models.py:277 order/models.py:304 part/models.py:1079 -#: part/templates/part/part_base.html:310 -#: templates/js/translated/return_order.js:339 -#: templates/js/translated/sales_order.js:827 +#: build/models.py:307 order/models.py:316 order/serializers.py:120 +#: part/models.py:1122 part/templates/part/part_base.html:310 +#: templates/js/translated/return_order.js:338 +#: templates/js/translated/sales_order.js:863 msgid "Creation Date" msgstr "Oprettelsesdato" -#: build/models.py:281 +#: build/models.py:311 msgid "Target completion date" msgstr "Projekteret afslutningsdato" -#: build/models.py:282 +#: build/models.py:312 msgid "Target date for build completion. Build will be overdue after this date." msgstr "" -#: build/models.py:285 order/models.py:500 order/models.py:2041 -#: templates/js/translated/build.js:2245 +#: build/models.py:315 order/models.py:521 order/models.py:2101 +#: templates/js/translated/build.js:2247 msgid "Completion Date" msgstr "Dato for afslutning" -#: build/models.py:291 +#: build/models.py:321 msgid "completed by" msgstr "udført af" -#: build/models.py:299 templates/js/translated/build.js:2205 +#: build/models.py:329 templates/js/translated/build.js:2207 msgid "Issued by" msgstr "Udstedt af" -#: build/models.py:300 +#: build/models.py:330 msgid "User who issued this build order" msgstr "Bruger som udstedte denne byggeordre" -#: build/models.py:308 build/templates/build/build_base.html:204 +#: build/models.py:338 build/templates/build/build_base.html:204 #: build/templates/build/detail.html:122 common/models.py:145 -#: order/models.py:322 order/templates/order/order_base.html:217 +#: order/models.py:334 order/templates/order/order_base.html:217 #: order/templates/order/return_order_base.html:188 -#: order/templates/order/sales_order_base.html:228 part/models.py:1096 +#: order/templates/order/sales_order_base.html:232 part/models.py:1139 #: part/templates/part/part_base.html:390 -#: report/templates/report/inventree_build_order_base.html:158 +#: report/templates/report/inventree_build_order_report.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/build.js:2219 +#: templates/js/translated/purchase_order.js:1763 +#: templates/js/translated/return_order.js:358 #: templates/js/translated/table_filters.js:531 msgid "Responsible" msgstr "Ansvarlig" -#: build/models.py:309 +#: build/models.py:339 msgid "User or group responsible for this build order" msgstr "Bruger eller gruppe ansvarlig for denne byggeordre" -#: build/models.py:314 build/templates/build/detail.html:108 +#: build/models.py:344 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:819 +#: order/templates/order/sales_order_base.html:184 +#: part/templates/part/part_base.html:383 stock/models.py:836 #: stock/templates/stock/item_base.html:200 #: templates/js/translated/company.js:1019 msgid "External Link" msgstr "Ekstern link" -#: build/models.py:319 +#: build/models.py:349 msgid "Build Priority" msgstr "Bygge Prioritet" -#: build/models.py:322 +#: build/models.py:352 msgid "Priority of this build order" msgstr "Prioritet af denne byggeordre" -#: build/models.py:329 common/models.py:129 order/admin.py:18 -#: order/models.py:286 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 +#: build/models.py:359 common/models.py:129 order/admin.py:18 +#: order/models.py:298 templates/InvenTree/settings/settings_staff_js.html:146 +#: templates/js/translated/build.js:2144 +#: templates/js/translated/purchase_order.js:1710 +#: templates/js/translated/return_order.js:317 +#: templates/js/translated/sales_order.js:842 #: templates/js/translated/table_filters.js:48 #: templates/project_code_data.html:6 msgid "Project Code" msgstr "" -#: build/models.py:330 +#: build/models.py:360 msgid "Project code for this build order" msgstr "" -#: build/models.py:581 +#: build/models.py:593 build/models.py:658 +msgid "Failed to offload task to complete build allocations" +msgstr "" + +#: build/models.py:615 #, python-brace-format msgid "Build order {build} has been completed" msgstr "Bygningsordre {build} er fuldført" -#: build/models.py:587 +#: build/models.py:621 msgid "A build order has been completed" msgstr "En byggeordre er fuldført" -#: build/models.py:805 build/models.py:880 +#: build/models.py:847 build/models.py:932 msgid "No build output specified" msgstr "" -#: build/models.py:808 +#: build/models.py:850 msgid "Build output is already completed" msgstr "" -#: build/models.py:811 +#: build/models.py:853 msgid "Build output does not match Build Order" msgstr "" -#: build/models.py:884 build/serializers.py:223 build/serializers.py:262 -#: build/serializers.py:831 order/models.py:538 order/serializers.py:429 -#: order/serializers.py:572 part/serializers.py:1471 part/serializers.py:1871 -#: stock/models.py:662 stock/models.py:1474 stock/serializers.py:472 +#: build/models.py:936 build/serializers.py:220 build/serializers.py:269 +#: build/serializers.py:867 order/models.py:559 order/serializers.py:433 +#: order/serializers.py:576 part/serializers.py:1488 part/serializers.py:1888 +#: stock/models.py:679 stock/models.py:1499 stock/serializers.py:601 msgid "Quantity must be greater than zero" msgstr "" -#: build/models.py:889 build/serializers.py:228 +#: build/models.py:941 build/serializers.py:225 msgid "Quantity cannot be greater than the output quantity" msgstr "" -#: build/models.py:946 build/serializers.py:533 +#: build/models.py:1001 build/serializers.py:548 #, python-brace-format msgid "Build output {serial} has not passed all required tests" msgstr "" -#: build/models.py:1308 +#: build/models.py:1352 +msgid "Build Order Line Item" +msgstr "" + +#: build/models.py:1377 msgid "Build object" msgstr "" -#: build/models.py:1322 build/models.py:1578 build/serializers.py:210 -#: build/serializers.py:247 build/templates/build/build_base.html:102 -#: build/templates/build/detail.html:34 common/models.py:2516 -#: order/models.py:1259 order/models.py:1916 order/serializers.py:1335 -#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:416 -#: part/forms.py:48 part/models.py:3162 part/models.py:4035 +#: build/models.py:1391 build/models.py:1647 build/serializers.py:207 +#: build/serializers.py:254 build/templates/build/build_base.html:102 +#: build/templates/build/detail.html:34 common/models.py:2539 +#: order/models.py:1308 order/models.py:1967 order/serializers.py:1339 +#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:418 +#: part/forms.py:48 part/models.py:3205 part/models.py:4078 #: 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 +#: report/templates/report/inventree_build_order_report.html:113 +#: report/templates/report/inventree_purchase_order_report.html:29 +#: report/templates/report/inventree_sales_order_report.html:29 +#: report/templates/report/inventree_stock_location_report.html:104 +#: report/templates/report/inventree_test_report.html:90 +#: report/templates/report/inventree_test_report.html:170 stock/admin.py:160 +#: stock/serializers.py:126 stock/serializers.py:166 stock/serializers.py:592 #: 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/build.js:737 templates/js/translated/build.js:1369 +#: templates/js/translated/build.js:1746 templates/js/translated/build.js:2357 #: templates/js/translated/company.js:1818 -#: templates/js/translated/model_renderers.js:230 +#: templates/js/translated/model_renderers.js:236 #: templates/js/translated/order.js:304 templates/js/translated/part.js:961 -#: templates/js/translated/part.js:1811 templates/js/translated/part.js:3341 +#: templates/js/translated/part.js:1811 templates/js/translated/part.js:3340 #: 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/purchase_order.js:1852 +#: templates/js/translated/purchase_order.js:2071 #: 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/sales_order.js:1235 +#: templates/js/translated/sales_order.js:1554 +#: templates/js/translated/sales_order.js:1644 +#: templates/js/translated/sales_order.js:1734 +#: templates/js/translated/sales_order.js:1860 #: templates/js/translated/stock.js:564 templates/js/translated/stock.js:702 #: templates/js/translated/stock.js:873 templates/js/translated/stock.js:3021 #: templates/js/translated/stock.js:3104 msgid "Quantity" msgstr "" -#: build/models.py:1323 +#: build/models.py:1392 msgid "Required quantity for build order" msgstr "" -#: build/models.py:1403 +#: build/models.py:1472 msgid "Build item must specify a build output, as master part is marked as trackable" msgstr "" -#: build/models.py:1412 +#: build/models.py:1481 #, python-brace-format msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})" msgstr "" -#: build/models.py:1422 order/models.py:1867 +#: build/models.py:1491 order/models.py:1918 msgid "Stock item is over-allocated" msgstr "" -#: build/models.py:1428 order/models.py:1870 +#: build/models.py:1497 order/models.py:1921 msgid "Allocation quantity must be greater than zero" msgstr "" -#: build/models.py:1434 +#: build/models.py:1503 msgid "Quantity must be 1 for serialized stock" msgstr "" -#: build/models.py:1493 +#: build/models.py:1562 msgid "Selected stock item does not match BOM line" msgstr "" -#: build/models.py:1565 build/serializers.py:811 order/serializers.py:1179 -#: order/serializers.py:1200 stock/serializers.py:566 stock/serializers.py:1052 -#: stock/serializers.py:1164 stock/templates/stock/item_base.html:10 +#: build/models.py:1634 build/serializers.py:847 order/serializers.py:1183 +#: order/serializers.py:1204 stock/models.py:360 stock/serializers.py:92 +#: stock/serializers.py:695 stock/serializers.py:1181 stock/serializers.py:1293 +#: 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/build.js:1745 #: 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/sales_order.js:1234 +#: templates/js/translated/sales_order.js:1535 +#: templates/js/translated/sales_order.js:1540 +#: templates/js/translated/sales_order.js:1641 +#: templates/js/translated/sales_order.js:1728 #: templates/js/translated/stock.js:677 templates/js/translated/stock.js:843 #: templates/js/translated/stock.js:2977 msgid "Stock Item" msgstr "" -#: build/models.py:1566 +#: build/models.py:1635 msgid "Source stock item" msgstr "" -#: build/models.py:1579 +#: build/models.py:1648 msgid "Stock quantity to allocate to build" msgstr "" -#: build/models.py:1587 +#: build/models.py:1656 msgid "Install into" msgstr "" -#: build/models.py:1588 +#: build/models.py:1657 msgid "Destination stock item" msgstr "" -#: build/serializers.py:160 build/serializers.py:840 -#: templates/js/translated/build.js:1319 +#: build/serializers.py:157 build/serializers.py:876 +#: templates/js/translated/build.js:1322 msgid "Build Output" msgstr "" -#: build/serializers.py:172 +#: build/serializers.py:169 msgid "Build output does not match the parent build" msgstr "" -#: build/serializers.py:176 +#: build/serializers.py:173 msgid "Output part does not match BuildOrder part" msgstr "" -#: build/serializers.py:180 +#: build/serializers.py:177 msgid "This build output has already been completed" msgstr "" -#: build/serializers.py:191 +#: build/serializers.py:188 msgid "This build output is not fully allocated" msgstr "" -#: build/serializers.py:211 build/serializers.py:248 +#: build/serializers.py:208 build/serializers.py:255 msgid "Enter quantity for build output" msgstr "" -#: build/serializers.py:269 +#: build/serializers.py:276 msgid "Integer quantity required for trackable parts" msgstr "" -#: build/serializers.py:272 +#: build/serializers.py:279 msgid "Integer quantity required, as the bill of materials contains trackable parts" msgstr "" -#: build/serializers.py:287 order/serializers.py:585 order/serializers.py:1339 -#: stock/serializers.py:483 templates/js/translated/purchase_order.js:1153 +#: build/serializers.py:294 order/serializers.py:589 order/serializers.py:1343 +#: stock/serializers.py:612 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 +#: build/serializers.py:295 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:995 -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:561 -#: order/serializers.py:669 order/serializers.py:1675 part/serializers.py:1127 -#: 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 +#: build/serializers.py:300 build/serializers.py:441 build/serializers.py:513 +#: order/serializers.py:565 order/serializers.py:673 order/serializers.py:1679 +#: part/serializers.py:1144 stock/serializers.py:101 stock/serializers.py:623 +#: stock/serializers.py:783 stock/serializers.py:879 stock/serializers.py:1325 +#: stock/serializers.py:1581 stock/templates/stock/item_base.html:394 #: 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/barcode.js:795 templates/js/translated/build.js:1001 +#: templates/js/translated/build.js:2372 #: templates/js/translated/purchase_order.js:1178 #: templates/js/translated/purchase_order.js:1268 -#: templates/js/translated/sales_order.js: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/sales_order.js:1547 +#: templates/js/translated/sales_order.js:1655 +#: templates/js/translated/sales_order.js:1663 +#: templates/js/translated/sales_order.js:1742 #: templates/js/translated/stock.js:678 templates/js/translated/stock.js:844 -#: templates/js/translated/stock.js:1060 templates/js/translated/stock.js:2200 +#: templates/js/translated/stock.js:1060 templates/js/translated/stock.js:2201 #: templates/js/translated/stock.js:2871 msgid "Location" msgstr "" -#: build/serializers.py:427 +#: build/serializers.py:301 +msgid "Stock location for build output" +msgstr "" + +#: build/serializers.py:315 +msgid "Auto Allocate Serial Numbers" +msgstr "" + +#: build/serializers.py:316 +msgid "Automatically allocate required items with matching serial numbers" +msgstr "" + +#: build/serializers.py:331 +msgid "Serial numbers must be provided for trackable parts" +msgstr "" + +#: build/serializers.py:356 stock/api.py:1031 +msgid "The following serial numbers already exist or are invalid" +msgstr "" + +#: build/serializers.py:403 build/serializers.py:465 build/serializers.py:554 +msgid "A list of build outputs must be provided" +msgstr "" + +#: build/serializers.py:442 msgid "Stock location for scrapped outputs" msgstr "" -#: build/serializers.py:433 +#: build/serializers.py:448 msgid "Discard Allocations" msgstr "" -#: build/serializers.py:434 +#: build/serializers.py:449 msgid "Discard any stock allocations for scrapped outputs" msgstr "" -#: build/serializers.py:439 +#: build/serializers.py:454 msgid "Reason for scrapping build output(s)" msgstr "" -#: build/serializers.py:499 +#: build/serializers.py:514 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:922 -#: order/models.py:2020 order/serializers.py:593 stock/admin.py:165 -#: stock/serializers.py:801 stock/serializers.py:1340 +#: build/serializers.py:520 build/templates/build/build_base.html:151 +#: build/templates/build/detail.html:62 order/models.py:952 +#: order/models.py:2080 order/serializers.py:597 stock/admin.py:165 +#: stock/serializers.py:930 stock/serializers.py:1469 #: stock/templates/stock/item_base.html:427 -#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2189 +#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2191 #: templates/js/translated/purchase_order.js:1308 -#: templates/js/translated/purchase_order.js: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/purchase_order.js:1722 +#: templates/js/translated/return_order.js:330 +#: templates/js/translated/sales_order.js:855 +#: templates/js/translated/stock.js:2176 templates/js/translated/stock.js:2995 #: templates/js/translated/stock.js:3120 msgid "Status" msgstr "" -#: build/serializers.py:511 +#: build/serializers.py:526 msgid "Accept Incomplete Allocation" msgstr "" -#: build/serializers.py:512 +#: build/serializers.py:527 msgid "Complete outputs if stock has not been fully allocated" msgstr "" -#: build/serializers.py:592 -msgid "Remove Allocated Stock" +#: build/serializers.py:612 +msgid "Consume Allocated Stock" msgstr "" -#: build/serializers.py:593 -msgid "Subtract any stock which has already been allocated to this build" +#: build/serializers.py:613 +msgid "Consume any stock which has already been allocated to this build" msgstr "" -#: build/serializers.py:599 +#: build/serializers.py:619 msgid "Remove Incomplete Outputs" msgstr "" -#: build/serializers.py:600 +#: build/serializers.py:620 msgid "Delete any build outputs which have not been completed" msgstr "" -#: build/serializers.py:627 +#: build/serializers.py:647 msgid "Not permitted" msgstr "Ikke tilladt" -#: build/serializers.py:628 +#: build/serializers.py:648 msgid "Accept as consumed by this build order" msgstr "Accepter som forbrugt af denne byggeordre" -#: build/serializers.py:629 +#: build/serializers.py:649 msgid "Deallocate before completing this build order" msgstr "" -#: build/serializers.py:651 +#: build/serializers.py:679 msgid "Overallocated Stock" msgstr "" -#: build/serializers.py:653 +#: build/serializers.py:681 msgid "How do you want to handle extra stock items assigned to the build order" msgstr "" -#: build/serializers.py:663 +#: build/serializers.py:691 msgid "Some stock items have been overallocated" msgstr "" -#: build/serializers.py:668 +#: build/serializers.py:696 msgid "Accept Unallocated" msgstr "Accepter Ikke tildelt" -#: build/serializers.py:669 +#: build/serializers.py:697 msgid "Accept that stock items have not been fully allocated to this build order" msgstr "Accepter at lagervarer ikke er fuldt tildelt til denne byggeordre" -#: build/serializers.py:679 templates/js/translated/build.js:315 +#: build/serializers.py:707 templates/js/translated/build.js:315 msgid "Required stock has not been fully allocated" msgstr "" -#: build/serializers.py:684 order/serializers.py:297 order/serializers.py:1242 +#: build/serializers.py:712 order/serializers.py:301 order/serializers.py:1246 msgid "Accept Incomplete" msgstr "Accepter ufuldført" -#: build/serializers.py:685 +#: build/serializers.py:713 msgid "Accept that the required number of build outputs have not been completed" msgstr "" -#: build/serializers.py:695 templates/js/translated/build.js:319 +#: build/serializers.py:723 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 +#: build/serializers.py:732 templates/js/translated/build.js:303 msgid "Build order has incomplete outputs" msgstr "" -#: build/serializers.py:734 +#: build/serializers.py:770 msgid "Build Line" msgstr "Bygge linje" -#: build/serializers.py:744 +#: build/serializers.py:780 msgid "Build output" msgstr "" -#: build/serializers.py:752 +#: build/serializers.py:788 msgid "Build output must point to the same build" msgstr "" -#: build/serializers.py:788 +#: build/serializers.py:824 msgid "Build Line Item" msgstr "" -#: build/serializers.py:802 +#: build/serializers.py:838 msgid "bom_item.part must point to the same part as the build order" msgstr "" -#: build/serializers.py:817 stock/serializers.py:1065 +#: build/serializers.py:853 stock/serializers.py:1194 msgid "Item must be in stock" msgstr "" -#: build/serializers.py:865 order/serializers.py:1233 +#: build/serializers.py:901 order/serializers.py:1237 #, python-brace-format msgid "Available quantity ({q}) exceeded" msgstr "" -#: build/serializers.py:871 +#: build/serializers.py:907 msgid "Build output must be specified for allocation of tracked parts" msgstr "" -#: build/serializers.py:878 +#: build/serializers.py:914 msgid "Build output cannot be specified for allocation of untracked parts" msgstr "" -#: build/serializers.py:902 order/serializers.py:1485 +#: build/serializers.py:938 order/serializers.py:1489 msgid "Allocation items must be provided" msgstr "" -#: build/serializers.py:965 +#: build/serializers.py:1001 msgid "Stock location where parts are to be sourced (leave blank to take from any location)" msgstr "" -#: build/serializers.py:973 +#: build/serializers.py:1009 msgid "Exclude Location" msgstr "" -#: build/serializers.py:974 +#: build/serializers.py:1010 msgid "Exclude stock items from this selected location" msgstr "" -#: build/serializers.py:979 +#: build/serializers.py:1015 msgid "Interchangeable Stock" msgstr "" -#: build/serializers.py:980 +#: build/serializers.py:1016 msgid "Stock items in multiple locations can be used interchangeably" msgstr "" -#: build/serializers.py:985 +#: build/serializers.py:1021 msgid "Substitute Stock" msgstr "" -#: build/serializers.py:986 +#: build/serializers.py:1022 msgid "Allow allocation of substitute parts" msgstr "" -#: build/serializers.py:991 +#: build/serializers.py:1027 msgid "Optional Items" msgstr "" -#: build/serializers.py:992 +#: build/serializers.py:1028 msgid "Allocate optional BOM items to build order" msgstr "" -#: build/serializers.py:1097 part/models.py:3930 part/models.py:4366 -#: stock/api.py:758 +#: build/serializers.py:1050 +msgid "Failed to start auto-allocation task" +msgstr "" + +#: build/serializers.py:1140 part/models.py:3973 part/models.py:4409 +#: stock/api.py:794 msgid "BOM Item" msgstr "" -#: build/serializers.py:1106 templates/js/translated/index.js:130 +#: build/serializers.py:1149 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:817 part/serializers.py:1489 +#: build/serializers.py:1154 part/admin.py:132 part/bom.py:173 +#: part/serializers.py:832 part/serializers.py:1506 #: 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/build.js:2613 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:1491 -#: templates/js/translated/build.js:2618 +#: build/serializers.py:1159 part/serializers.py:1508 +#: templates/js/translated/build.js:2617 #: templates/js/translated/table_filters.js:360 msgid "In Production" msgstr "" -#: build/serializers.py:1121 part/bom.py:172 part/serializers.py:1514 +#: build/serializers.py:1164 part/bom.py:172 part/serializers.py:1531 #: part/templates/part/part_base.html:192 -#: templates/js/translated/sales_order.js:1893 +#: templates/js/translated/sales_order.js:1929 msgid "Available Stock" msgstr "" -#: build/tasks.py:172 +#: build/status_codes.py:11 generic/states/tests.py:17 order/status_codes.py:12 +#: order/status_codes.py:37 order/status_codes.py:64 order/status_codes.py:82 +#: templates/js/translated/table_filters.js:598 +msgid "Pending" +msgstr "Afventende" + +#: build/status_codes.py:12 +msgid "Production" +msgstr "Produktion" + +#: build/status_codes.py:13 order/status_codes.py:15 order/status_codes.py:45 +#: order/status_codes.py:70 +msgid "Cancelled" +msgstr "Annulleret" + +#: build/status_codes.py:14 generic/states/tests.py:19 order/status_codes.py:14 +#: order/status_codes.py:44 order/status_codes.py:69 +#: order/templates/order/order_base.html:158 +#: order/templates/order/sales_order_base.html:165 report/models.py:443 +msgid "Complete" +msgstr "Fuldført" + +#: build/tasks.py:184 msgid "Stock required for build order" msgstr "" -#: build/tasks.py:189 +#: build/tasks.py:201 msgid "Overdue Build Order" msgstr "" -#: build/tasks.py:194 +#: build/tasks.py:206 #, python-brace-format msgid "Build order {bo} is now overdue" msgstr "" @@ -1822,18 +1673,18 @@ 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:297 -#: order/models.py:1294 order/templates/order/order_base.html:186 +#: build/templates/build/detail.html:138 order/models.py:309 +#: order/models.py:1343 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 +#: order/templates/order/sales_order_base.html:196 +#: report/templates/report/inventree_build_order_report.html:125 +#: templates/js/translated/build.js:2239 templates/js/translated/part.js:1830 +#: templates/js/translated/purchase_order.js:1739 +#: templates/js/translated/purchase_order.js:2147 +#: templates/js/translated/return_order.js:346 +#: templates/js/translated/return_order.js:750 +#: templates/js/translated/sales_order.js:871 +#: templates/js/translated/sales_order.js:1903 msgid "Target Date" msgstr "" @@ -1846,7 +1697,7 @@ msgstr "" #: 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 +#: order/templates/order/sales_order_base.html:126 #: templates/js/translated/table_filters.js:98 #: templates/js/translated/table_filters.js:524 #: templates/js/translated/table_filters.js:626 @@ -1860,42 +1711,42 @@ msgid "Completed Outputs" msgstr "" #: build/templates/build/build_base.html:190 -#: build/templates/build/detail.html:101 order/api.py:1507 order/models.py:1536 -#: order/models.py:1650 order/models.py:1804 +#: build/templates/build/detail.html:101 order/api.py:1511 order/models.py:847 +#: order/models.py:1587 order/models.py:1701 order/models.py:1855 #: 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 +#: report/templates/report/inventree_build_order_report.html:135 +#: report/templates/report/inventree_sales_order_report.html:14 #: stock/templates/stock/item_base.html:369 #: templates/email/overdue_sales_order.html:15 #: templates/js/translated/pricing.js:929 -#: templates/js/translated/sales_order.js:769 -#: templates/js/translated/sales_order.js:992 +#: templates/js/translated/sales_order.js:805 +#: templates/js/translated/sales_order.js:1028 #: templates/js/translated/stock.js:2924 msgid "Sales Order" msgstr "" #: build/templates/build/build_base.html:197 #: build/templates/build/detail.html:115 -#: report/templates/report/inventree_build_order_base.html:152 +#: report/templates/report/inventree_build_order_report.html:152 #: templates/js/translated/table_filters.js:24 msgid "Issued By" msgstr "" #: build/templates/build/build_base.html:211 -#: build/templates/build/detail.html:94 templates/js/translated/build.js:2154 +#: build/templates/build/detail.html:94 templates/js/translated/build.js:2156 msgid "Priority" msgstr "" -#: build/templates/build/build_base.html:273 +#: build/templates/build/build_base.html:269 msgid "Delete Build Order" msgstr "" -#: build/templates/build/build_base.html:283 +#: build/templates/build/build_base.html:279 msgid "Build Order QR Code" msgstr "" -#: build/templates/build/build_base.html:295 +#: build/templates/build/build_base.html:291 msgid "Link Barcode to Build Order" msgstr "" @@ -1911,8 +1762,8 @@ msgstr "" msgid "Stock can be taken from any available location." msgstr "" -#: build/templates/build/detail.html:49 order/models.py:1430 -#: templates/js/translated/purchase_order.js:2190 +#: build/templates/build/detail.html:49 order/models.py:1479 +#: templates/js/translated/purchase_order.js:2189 msgid "Destination" msgstr "" @@ -1926,10 +1777,10 @@ 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/build.js:1380 +#: templates/js/translated/model_renderers.js:241 #: templates/js/translated/purchase_order.js:1274 -#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2189 +#: templates/js/translated/stock.js:1133 templates/js/translated/stock.js:2190 #: templates/js/translated/stock.js:3127 #: templates/js/translated/table_filters.js:313 #: templates/js/translated/table_filters.js:404 @@ -1939,8 +1790,8 @@ 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 +#: order/templates/order/sales_order_base.html:190 +#: templates/js/translated/build.js:2199 msgid "Created" msgstr "" @@ -1949,7 +1800,7 @@ msgid "No target date set" msgstr "" #: build/templates/build/detail.html:149 -#: order/templates/order/sales_order_base.html:202 +#: order/templates/order/sales_order_base.html:206 #: templates/js/translated/table_filters.js:689 msgid "Completed" msgstr "" @@ -2043,11 +1894,11 @@ msgstr "" msgid "Build Notes" msgstr "" -#: build/templates/build/detail.html:434 +#: build/templates/build/detail.html:435 msgid "Allocation Complete" msgstr "" -#: build/templates/build/detail.html:435 +#: build/templates/build/detail.html:436 msgid "All lines have been fully allocated" msgstr "" @@ -2125,1458 +1976,1485 @@ msgstr "" msgid "User or group responsible for this project" msgstr "" -#: common/models.py:765 +#: common/models.py:766 msgid "Settings key (must be unique - case insensitive)" msgstr "" -#: common/models.py:769 +#: common/models.py:770 msgid "Settings value" msgstr "" -#: common/models.py:821 +#: common/models.py:822 msgid "Chosen value is not a valid option" msgstr "" -#: common/models.py:837 +#: common/models.py:838 msgid "Value must be a boolean value" msgstr "" -#: common/models.py:845 +#: common/models.py:846 msgid "Value must be an integer value" msgstr "" -#: common/models.py:882 +#: common/models.py:883 msgid "Key string must be unique" msgstr "" -#: common/models.py:1114 +#: common/models.py:1115 msgid "No group" msgstr "" -#: common/models.py:1157 +#: common/models.py:1158 msgid "An empty domain is not allowed." msgstr "" -#: common/models.py:1159 +#: common/models.py:1160 #, python-brace-format msgid "Invalid domain name: {domain}" msgstr "" -#: common/models.py:1171 +#: common/models.py:1172 msgid "No plugin" msgstr "" -#: common/models.py:1259 +#: common/models.py:1260 msgid "Restart required" msgstr "" -#: common/models.py:1261 +#: common/models.py:1262 msgid "A setting has been changed which requires a server restart" msgstr "" -#: common/models.py:1268 +#: common/models.py:1269 msgid "Pending migrations" msgstr "" -#: common/models.py:1269 +#: common/models.py:1270 msgid "Number of pending database migrations" msgstr "" -#: common/models.py:1274 +#: common/models.py:1275 msgid "Server Instance Name" msgstr "" -#: common/models.py:1276 +#: common/models.py:1277 msgid "String descriptor for the server instance" msgstr "" -#: common/models.py:1280 +#: common/models.py:1281 msgid "Use instance name" msgstr "" -#: common/models.py:1281 +#: common/models.py:1282 msgid "Use the instance name in the title-bar" msgstr "" -#: common/models.py:1286 +#: common/models.py:1287 msgid "Restrict showing `about`" msgstr "" -#: common/models.py:1287 +#: common/models.py:1288 msgid "Show the `about` modal only to superusers" msgstr "" -#: common/models.py:1292 company/models.py:108 company/models.py:109 +#: common/models.py:1293 company/models.py:108 company/models.py:109 msgid "Company name" msgstr "" -#: common/models.py:1293 +#: common/models.py:1294 msgid "Internal company name" msgstr "" -#: common/models.py:1297 +#: common/models.py:1298 msgid "Base URL" msgstr "" -#: common/models.py:1298 +#: common/models.py:1299 msgid "Base URL for server instance" msgstr "" -#: common/models.py:1304 +#: common/models.py:1305 msgid "Default Currency" msgstr "" -#: common/models.py:1305 +#: common/models.py:1306 msgid "Select base currency for pricing calculations" msgstr "" -#: common/models.py:1311 +#: common/models.py:1312 msgid "Currency Update Interval" msgstr "" -#: common/models.py:1313 +#: common/models.py:1314 msgid "How often to update exchange rates (set to zero to disable)" msgstr "" -#: common/models.py:1316 common/models.py:1372 common/models.py:1385 -#: common/models.py:1393 common/models.py:1402 common/models.py:1411 -#: common/models.py:1613 common/models.py:1635 common/models.py:1750 -#: common/models.py:2053 +#: common/models.py:1317 common/models.py:1373 common/models.py:1386 +#: common/models.py:1394 common/models.py:1403 common/models.py:1412 +#: common/models.py:1620 common/models.py:1642 common/models.py:1757 +#: common/models.py:2076 msgid "days" msgstr "" -#: common/models.py:1320 +#: common/models.py:1321 msgid "Currency Update Plugin" msgstr "" -#: common/models.py:1321 +#: common/models.py:1322 msgid "Currency update plugin to use" msgstr "" -#: common/models.py:1326 +#: common/models.py:1327 msgid "Download from URL" msgstr "" -#: common/models.py:1328 +#: common/models.py:1329 msgid "Allow download of remote images and files from external URL" msgstr "" -#: common/models.py:1334 +#: common/models.py:1335 msgid "Download Size Limit" msgstr "" -#: common/models.py:1335 +#: common/models.py:1336 msgid "Maximum allowable download size for remote image" msgstr "" -#: common/models.py:1341 +#: common/models.py:1342 msgid "User-agent used to download from URL" msgstr "" -#: common/models.py:1343 +#: common/models.py:1344 msgid "Allow to override the user-agent used to download images and files from external URL (leave blank for the default)" msgstr "" -#: common/models.py:1348 +#: common/models.py:1349 msgid "Strict URL Validation" msgstr "" -#: common/models.py:1349 +#: common/models.py:1350 msgid "Require schema specification when validating URLs" msgstr "" -#: common/models.py:1354 +#: common/models.py:1355 msgid "Require confirm" msgstr "" -#: common/models.py:1355 +#: common/models.py:1356 msgid "Require explicit user confirmation for certain action." msgstr "" -#: common/models.py:1360 +#: common/models.py:1361 msgid "Tree Depth" msgstr "" -#: common/models.py:1362 +#: common/models.py:1363 msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed." msgstr "" -#: common/models.py:1368 +#: common/models.py:1369 msgid "Update Check Interval" msgstr "" -#: common/models.py:1369 +#: common/models.py:1370 msgid "How often to check for updates (set to zero to disable)" msgstr "" -#: common/models.py:1375 +#: common/models.py:1376 msgid "Automatic Backup" msgstr "" -#: common/models.py:1376 +#: common/models.py:1377 msgid "Enable automatic backup of database and media files" msgstr "" -#: common/models.py:1381 +#: common/models.py:1382 msgid "Auto Backup Interval" msgstr "" -#: common/models.py:1382 +#: common/models.py:1383 msgid "Specify number of days between automated backup events" msgstr "" -#: common/models.py:1388 +#: common/models.py:1389 msgid "Task Deletion Interval" msgstr "" -#: common/models.py:1390 +#: common/models.py:1391 msgid "Background task results will be deleted after specified number of days" msgstr "" -#: common/models.py:1397 +#: common/models.py:1398 msgid "Error Log Deletion Interval" msgstr "" -#: common/models.py:1399 +#: common/models.py:1400 msgid "Error logs will be deleted after specified number of days" msgstr "" -#: common/models.py:1406 +#: common/models.py:1407 msgid "Notification Deletion Interval" msgstr "" -#: common/models.py:1408 +#: common/models.py:1409 msgid "User notifications will be deleted after specified number of days" msgstr "" -#: common/models.py:1415 templates/InvenTree/settings/sidebar.html:31 +#: common/models.py:1416 templates/InvenTree/settings/sidebar.html:31 msgid "Barcode Support" msgstr "" -#: common/models.py:1416 +#: common/models.py:1417 msgid "Enable barcode scanner support in the web interface" msgstr "" -#: common/models.py:1421 +#: common/models.py:1422 msgid "Barcode Input Delay" msgstr "" -#: common/models.py:1422 +#: common/models.py:1423 msgid "Barcode input processing delay time" msgstr "" -#: common/models.py:1428 +#: common/models.py:1429 msgid "Barcode Webcam Support" msgstr "" -#: common/models.py:1429 +#: common/models.py:1430 msgid "Allow barcode scanning via webcam in browser" msgstr "" -#: common/models.py:1434 +#: common/models.py:1435 msgid "Part Revisions" msgstr "" -#: common/models.py:1435 +#: common/models.py:1436 msgid "Enable revision field for Part" msgstr "" -#: common/models.py:1440 +#: common/models.py:1441 +msgid "Allow Deletion from Assembly" +msgstr "" + +#: common/models.py:1442 +msgid "Allow deletion of parts which are used in an assembly" +msgstr "" + +#: common/models.py:1447 msgid "IPN Regex" msgstr "" -#: common/models.py:1441 +#: common/models.py:1448 msgid "Regular expression pattern for matching Part IPN" msgstr "" -#: common/models.py:1444 +#: common/models.py:1451 msgid "Allow Duplicate IPN" msgstr "" -#: common/models.py:1445 +#: common/models.py:1452 msgid "Allow multiple parts to share the same IPN" msgstr "" -#: common/models.py:1450 +#: common/models.py:1457 msgid "Allow Editing IPN" msgstr "" -#: common/models.py:1451 +#: common/models.py:1458 msgid "Allow changing the IPN value while editing a part" msgstr "" -#: common/models.py:1456 +#: common/models.py:1463 msgid "Copy Part BOM Data" msgstr "" -#: common/models.py:1457 +#: common/models.py:1464 msgid "Copy BOM data by default when duplicating a part" msgstr "" -#: common/models.py:1462 +#: common/models.py:1469 msgid "Copy Part Parameter Data" msgstr "" -#: common/models.py:1463 +#: common/models.py:1470 msgid "Copy parameter data by default when duplicating a part" msgstr "" -#: common/models.py:1468 +#: common/models.py:1475 msgid "Copy Part Test Data" msgstr "" -#: common/models.py:1469 +#: common/models.py:1476 msgid "Copy test data by default when duplicating a part" msgstr "" -#: common/models.py:1474 +#: common/models.py:1481 msgid "Copy Category Parameter Templates" msgstr "" -#: common/models.py:1475 +#: common/models.py:1482 msgid "Copy category parameter templates when creating a part" msgstr "" -#: common/models.py:1480 part/admin.py:108 part/models.py:3772 -#: report/models.py:182 stock/serializers.py:99 +#: common/models.py:1487 part/admin.py:108 part/models.py:3815 +#: report/models.py:293 report/models.py:360 report/serializers.py:90 +#: report/serializers.py:131 stock/serializers.py:228 #: templates/js/translated/table_filters.js:139 #: templates/js/translated/table_filters.js:767 msgid "Template" msgstr "" -#: common/models.py:1481 +#: common/models.py:1488 msgid "Parts are templates by default" msgstr "" -#: common/models.py:1486 part/admin.py:91 part/admin.py:431 part/models.py:1016 +#: common/models.py:1493 part/admin.py:91 part/admin.py:433 part/models.py:1059 #: 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:1487 +#: common/models.py:1494 msgid "Parts can be assembled from other components by default" msgstr "" -#: common/models.py:1492 part/admin.py:95 part/models.py:1022 +#: common/models.py:1499 part/admin.py:95 part/models.py:1065 #: templates/js/translated/table_filters.js:729 msgid "Component" msgstr "" -#: common/models.py:1493 +#: common/models.py:1500 msgid "Parts can be used as sub-components by default" msgstr "" -#: common/models.py:1498 part/admin.py:100 part/models.py:1034 +#: common/models.py:1505 part/admin.py:100 part/models.py:1077 msgid "Purchaseable" msgstr "" -#: common/models.py:1499 +#: common/models.py:1506 msgid "Parts are purchaseable by default" msgstr "" -#: common/models.py:1504 part/admin.py:104 part/models.py:1040 +#: common/models.py:1511 part/admin.py:104 part/models.py:1083 #: templates/js/translated/table_filters.js:755 msgid "Salable" msgstr "" -#: common/models.py:1505 +#: common/models.py:1512 msgid "Parts are salable by default" msgstr "" -#: common/models.py:1510 part/admin.py:113 part/models.py:1028 +#: common/models.py:1517 part/admin.py:113 part/models.py:1071 #: 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:1511 +#: common/models.py:1518 msgid "Parts are trackable by default" msgstr "" -#: common/models.py:1516 part/admin.py:117 part/models.py:1050 +#: common/models.py:1523 part/admin.py:117 part/models.py:1093 #: 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:1517 +#: common/models.py:1524 msgid "Parts are virtual by default" msgstr "" -#: common/models.py:1522 +#: common/models.py:1529 msgid "Show Import in Views" msgstr "" -#: common/models.py:1523 +#: common/models.py:1530 msgid "Display the import wizard in some part views" msgstr "" -#: common/models.py:1528 +#: common/models.py:1535 msgid "Show related parts" msgstr "" -#: common/models.py:1529 +#: common/models.py:1536 msgid "Display related parts for a part" msgstr "" -#: common/models.py:1534 +#: common/models.py:1541 msgid "Initial Stock Data" msgstr "" -#: common/models.py:1535 +#: common/models.py:1542 msgid "Allow creation of initial stock when adding a new part" msgstr "" -#: common/models.py:1540 templates/js/translated/part.js:107 +#: common/models.py:1547 templates/js/translated/part.js:107 msgid "Initial Supplier Data" msgstr "" -#: common/models.py:1542 +#: common/models.py:1549 msgid "Allow creation of initial supplier data when adding a new part" msgstr "" -#: common/models.py:1548 +#: common/models.py:1555 msgid "Part Name Display Format" msgstr "" -#: common/models.py:1549 +#: common/models.py:1556 msgid "Format to display the part name" msgstr "" -#: common/models.py:1555 +#: common/models.py:1562 msgid "Part Category Default Icon" msgstr "" -#: common/models.py:1556 +#: common/models.py:1563 msgid "Part category default icon (empty means no icon)" msgstr "" -#: common/models.py:1560 +#: common/models.py:1567 msgid "Enforce Parameter Units" msgstr "" -#: common/models.py:1562 +#: common/models.py:1569 msgid "If units are provided, parameter values must match the specified units" msgstr "" -#: common/models.py:1568 +#: common/models.py:1575 msgid "Minimum Pricing Decimal Places" msgstr "" -#: common/models.py:1570 +#: common/models.py:1577 msgid "Minimum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1576 +#: common/models.py:1583 msgid "Maximum Pricing Decimal Places" msgstr "" -#: common/models.py:1578 +#: common/models.py:1585 msgid "Maximum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1584 +#: common/models.py:1591 msgid "Use Supplier Pricing" msgstr "" -#: common/models.py:1586 +#: common/models.py:1593 msgid "Include supplier price breaks in overall pricing calculations" msgstr "" -#: common/models.py:1592 +#: common/models.py:1599 msgid "Purchase History Override" msgstr "" -#: common/models.py:1594 +#: common/models.py:1601 msgid "Historical purchase order pricing overrides supplier price breaks" msgstr "" -#: common/models.py:1600 +#: common/models.py:1607 msgid "Use Stock Item Pricing" msgstr "" -#: common/models.py:1602 +#: common/models.py:1609 msgid "Use pricing from manually entered stock data for pricing calculations" msgstr "" -#: common/models.py:1608 +#: common/models.py:1615 msgid "Stock Item Pricing Age" msgstr "" -#: common/models.py:1610 +#: common/models.py:1617 msgid "Exclude stock items older than this number of days from pricing calculations" msgstr "" -#: common/models.py:1617 +#: common/models.py:1624 msgid "Use Variant Pricing" msgstr "" -#: common/models.py:1618 +#: common/models.py:1625 msgid "Include variant pricing in overall pricing calculations" msgstr "" -#: common/models.py:1623 +#: common/models.py:1630 msgid "Active Variants Only" msgstr "" -#: common/models.py:1625 +#: common/models.py:1632 msgid "Only use active variant parts for calculating variant pricing" msgstr "" -#: common/models.py:1631 +#: common/models.py:1638 msgid "Pricing Rebuild Interval" msgstr "" -#: common/models.py:1633 +#: common/models.py:1640 msgid "Number of days before part pricing is automatically updated" msgstr "" -#: common/models.py:1640 +#: common/models.py:1647 msgid "Internal Prices" msgstr "" -#: common/models.py:1641 +#: common/models.py:1648 msgid "Enable internal prices for parts" msgstr "" -#: common/models.py:1646 +#: common/models.py:1653 msgid "Internal Price Override" msgstr "" -#: common/models.py:1648 +#: common/models.py:1655 msgid "If available, internal prices override price range calculations" msgstr "" -#: common/models.py:1654 +#: common/models.py:1661 msgid "Enable label printing" msgstr "" -#: common/models.py:1655 +#: common/models.py:1662 msgid "Enable label printing from the web interface" msgstr "" -#: common/models.py:1660 +#: common/models.py:1667 msgid "Label Image DPI" msgstr "" -#: common/models.py:1662 +#: common/models.py:1669 msgid "DPI resolution when generating image files to supply to label printing plugins" msgstr "" -#: common/models.py:1668 +#: common/models.py:1675 msgid "Enable Reports" msgstr "" -#: common/models.py:1669 +#: common/models.py:1676 msgid "Enable generation of reports" msgstr "" -#: common/models.py:1674 templates/stats.html:25 +#: common/models.py:1681 templates/stats.html:25 msgid "Debug Mode" msgstr "" -#: common/models.py:1675 +#: common/models.py:1682 msgid "Generate reports in debug mode (HTML output)" msgstr "" -#: common/models.py:1680 +#: common/models.py:1687 msgid "Log Report Errors" msgstr "" -#: common/models.py:1681 +#: common/models.py:1688 msgid "Log errors which occur when generating reports" msgstr "" -#: common/models.py:1686 plugin/builtin/labels/label_sheet.py:28 -#: report/models.py:203 +#: common/models.py:1693 plugin/builtin/labels/label_sheet.py:28 +#: report/models.py:301 msgid "Page Size" msgstr "" -#: common/models.py:1687 +#: common/models.py:1694 msgid "Default page size for PDF reports" msgstr "" -#: common/models.py:1692 +#: common/models.py:1699 msgid "Enable Test Reports" msgstr "" -#: common/models.py:1693 +#: common/models.py:1700 msgid "Enable generation of test reports" msgstr "" -#: common/models.py:1698 +#: common/models.py:1705 msgid "Attach Test Reports" msgstr "" -#: common/models.py:1700 +#: common/models.py:1707 msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item" msgstr "" -#: common/models.py:1706 +#: common/models.py:1713 msgid "Globally Unique Serials" msgstr "" -#: common/models.py:1707 +#: common/models.py:1714 msgid "Serial numbers for stock items must be globally unique" msgstr "" -#: common/models.py:1712 +#: common/models.py:1719 msgid "Autofill Serial Numbers" msgstr "" -#: common/models.py:1713 +#: common/models.py:1720 msgid "Autofill serial numbers in forms" msgstr "" -#: common/models.py:1718 +#: common/models.py:1725 msgid "Delete Depleted Stock" msgstr "" -#: common/models.py:1720 +#: common/models.py:1727 msgid "Determines default behavior when a stock item is depleted" msgstr "" -#: common/models.py:1726 +#: common/models.py:1733 msgid "Batch Code Template" msgstr "" -#: common/models.py:1728 +#: common/models.py:1735 msgid "Template for generating default batch codes for stock items" msgstr "" -#: common/models.py:1733 +#: common/models.py:1740 msgid "Stock Expiry" msgstr "" -#: common/models.py:1734 +#: common/models.py:1741 msgid "Enable stock expiry functionality" msgstr "" -#: common/models.py:1739 +#: common/models.py:1746 msgid "Sell Expired Stock" msgstr "" -#: common/models.py:1740 +#: common/models.py:1747 msgid "Allow sale of expired stock" msgstr "" -#: common/models.py:1745 +#: common/models.py:1752 msgid "Stock Stale Time" msgstr "" -#: common/models.py:1747 +#: common/models.py:1754 msgid "Number of days stock items are considered stale before expiring" msgstr "" -#: common/models.py:1754 +#: common/models.py:1761 msgid "Build Expired Stock" msgstr "" -#: common/models.py:1755 +#: common/models.py:1762 msgid "Allow building with expired stock" msgstr "" -#: common/models.py:1760 +#: common/models.py:1767 msgid "Stock Ownership Control" msgstr "" -#: common/models.py:1761 +#: common/models.py:1768 msgid "Enable ownership control over stock locations and items" msgstr "" -#: common/models.py:1766 +#: common/models.py:1773 msgid "Stock Location Default Icon" msgstr "" -#: common/models.py:1767 +#: common/models.py:1774 msgid "Stock location default icon (empty means no icon)" msgstr "" -#: common/models.py:1771 +#: common/models.py:1778 msgid "Show Installed Stock Items" msgstr "" -#: common/models.py:1772 +#: common/models.py:1779 msgid "Display installed stock items in stock tables" msgstr "" -#: common/models.py:1777 +#: common/models.py:1784 msgid "Check BOM when installing items" msgstr "" -#: common/models.py:1779 +#: common/models.py:1786 msgid "Installed stock items must exist in the BOM for the parent part" msgstr "" -#: common/models.py:1785 +#: common/models.py:1792 +msgid "Allow Out of Stock Transfer" +msgstr "" + +#: common/models.py:1794 +msgid "Allow stock items which are not in stock to be transferred between stock locations" +msgstr "" + +#: common/models.py:1800 msgid "Build Order Reference Pattern" msgstr "" -#: common/models.py:1787 +#: common/models.py:1802 msgid "Required pattern for generating Build Order reference field" msgstr "" -#: common/models.py:1793 common/models.py:1821 common/models.py:1843 -#: common/models.py:1871 +#: common/models.py:1808 common/models.py:1836 common/models.py:1858 +#: common/models.py:1894 msgid "Require Responsible Owner" msgstr "" -#: common/models.py:1794 common/models.py:1822 common/models.py:1844 -#: common/models.py:1872 +#: common/models.py:1809 common/models.py:1837 common/models.py:1859 +#: common/models.py:1895 msgid "A responsible owner must be assigned to each order" msgstr "" -#: common/models.py:1799 +#: common/models.py:1814 msgid "Block Until Tests Pass" msgstr "" -#: common/models.py:1801 +#: common/models.py:1816 msgid "Prevent build outputs from being completed until all required tests pass" msgstr "" -#: common/models.py:1807 +#: common/models.py:1822 msgid "Enable Return Orders" msgstr "" -#: common/models.py:1808 +#: common/models.py:1823 msgid "Enable return order functionality in the user interface" msgstr "" -#: common/models.py:1813 +#: common/models.py:1828 msgid "Return Order Reference Pattern" msgstr "" -#: common/models.py:1815 +#: common/models.py:1830 msgid "Required pattern for generating Return Order reference field" msgstr "" -#: common/models.py:1827 +#: common/models.py:1842 msgid "Edit Completed Return Orders" msgstr "" -#: common/models.py:1829 +#: common/models.py:1844 msgid "Allow editing of return orders after they have been completed" msgstr "" -#: common/models.py:1835 +#: common/models.py:1850 msgid "Sales Order Reference Pattern" msgstr "" -#: common/models.py:1837 +#: common/models.py:1852 msgid "Required pattern for generating Sales Order reference field" msgstr "" -#: common/models.py:1849 +#: common/models.py:1864 msgid "Sales Order Default Shipment" msgstr "" -#: common/models.py:1850 +#: common/models.py:1865 msgid "Enable creation of default shipment with sales orders" msgstr "" -#: common/models.py:1855 +#: common/models.py:1870 msgid "Edit Completed Sales Orders" msgstr "" -#: common/models.py:1857 +#: common/models.py:1872 msgid "Allow editing of sales orders after they have been shipped or completed" msgstr "" -#: common/models.py:1863 +#: common/models.py:1878 +#, fuzzy +#| msgid "A build order has been completed" +msgid "Mark Shipped Orders as Complete" +msgstr "En byggeordre er fuldført" + +#: common/models.py:1880 +msgid "Sales orders marked as shipped will automatically be completed, bypassing the \"shipped\" status" +msgstr "" + +#: common/models.py:1886 msgid "Purchase Order Reference Pattern" msgstr "" -#: common/models.py:1865 +#: common/models.py:1888 msgid "Required pattern for generating Purchase Order reference field" msgstr "" -#: common/models.py:1877 +#: common/models.py:1900 msgid "Edit Completed Purchase Orders" msgstr "" -#: common/models.py:1879 +#: common/models.py:1902 msgid "Allow editing of purchase orders after they have been shipped or completed" msgstr "" -#: common/models.py:1885 +#: common/models.py:1908 msgid "Auto Complete Purchase Orders" msgstr "" -#: common/models.py:1887 +#: common/models.py:1910 msgid "Automatically mark purchase orders as complete when all line items are received" msgstr "" -#: common/models.py:1894 +#: common/models.py:1917 msgid "Enable password forgot" msgstr "" -#: common/models.py:1895 +#: common/models.py:1918 msgid "Enable password forgot function on the login pages" msgstr "" -#: common/models.py:1900 +#: common/models.py:1923 msgid "Enable registration" msgstr "" -#: common/models.py:1901 +#: common/models.py:1924 msgid "Enable self-registration for users on the login pages" msgstr "" -#: common/models.py:1906 +#: common/models.py:1929 msgid "Enable SSO" msgstr "" -#: common/models.py:1907 +#: common/models.py:1930 msgid "Enable SSO on the login pages" msgstr "" -#: common/models.py:1912 +#: common/models.py:1935 msgid "Enable SSO registration" msgstr "" -#: common/models.py:1914 +#: common/models.py:1937 msgid "Enable self-registration via SSO for users on the login pages" msgstr "" -#: common/models.py:1920 +#: common/models.py:1943 msgid "Email required" msgstr "" -#: common/models.py:1921 +#: common/models.py:1944 msgid "Require user to supply mail on signup" msgstr "" -#: common/models.py:1926 +#: common/models.py:1949 msgid "Auto-fill SSO users" msgstr "" -#: common/models.py:1928 +#: common/models.py:1951 msgid "Automatically fill out user-details from SSO account-data" msgstr "" -#: common/models.py:1934 +#: common/models.py:1957 msgid "Mail twice" msgstr "" -#: common/models.py:1935 +#: common/models.py:1958 msgid "On signup ask users twice for their mail" msgstr "" -#: common/models.py:1940 +#: common/models.py:1963 msgid "Password twice" msgstr "" -#: common/models.py:1941 +#: common/models.py:1964 msgid "On signup ask users twice for their password" msgstr "" -#: common/models.py:1946 +#: common/models.py:1969 msgid "Allowed domains" msgstr "" -#: common/models.py:1948 +#: common/models.py:1971 msgid "Restrict signup to certain domains (comma-separated, starting with @)" msgstr "" -#: common/models.py:1954 +#: common/models.py:1977 msgid "Group on signup" msgstr "" -#: common/models.py:1955 +#: common/models.py:1978 msgid "Group to which new users are assigned on registration" msgstr "" -#: common/models.py:1960 +#: common/models.py:1983 msgid "Enforce MFA" msgstr "" -#: common/models.py:1961 +#: common/models.py:1984 msgid "Users must use multifactor security." msgstr "" -#: common/models.py:1966 +#: common/models.py:1989 msgid "Check plugins on startup" msgstr "" -#: common/models.py:1968 +#: common/models.py:1991 msgid "Check that all plugins are installed on startup - enable in container environments" msgstr "" -#: common/models.py:1976 +#: common/models.py:1999 msgid "Check for plugin updates" msgstr "" -#: common/models.py:1977 +#: common/models.py:2000 msgid "Enable periodic checks for updates to installed plugins" msgstr "" -#: common/models.py:1983 +#: common/models.py:2006 msgid "Enable URL integration" msgstr "" -#: common/models.py:1984 +#: common/models.py:2007 msgid "Enable plugins to add URL routes" msgstr "" -#: common/models.py:1990 +#: common/models.py:2013 msgid "Enable navigation integration" msgstr "" -#: common/models.py:1991 +#: common/models.py:2014 msgid "Enable plugins to integrate into navigation" msgstr "" -#: common/models.py:1997 +#: common/models.py:2020 msgid "Enable app integration" msgstr "" -#: common/models.py:1998 +#: common/models.py:2021 msgid "Enable plugins to add apps" msgstr "" -#: common/models.py:2004 +#: common/models.py:2027 msgid "Enable schedule integration" msgstr "" -#: common/models.py:2005 +#: common/models.py:2028 msgid "Enable plugins to run scheduled tasks" msgstr "" -#: common/models.py:2011 +#: common/models.py:2034 msgid "Enable event integration" msgstr "" -#: common/models.py:2012 +#: common/models.py:2035 msgid "Enable plugins to respond to internal events" msgstr "" -#: common/models.py:2018 +#: common/models.py:2041 msgid "Enable project codes" msgstr "" -#: common/models.py:2019 +#: common/models.py:2042 msgid "Enable project codes for tracking projects" msgstr "" -#: common/models.py:2024 +#: common/models.py:2047 msgid "Stocktake Functionality" msgstr "" -#: common/models.py:2026 +#: common/models.py:2049 msgid "Enable stocktake functionality for recording stock levels and calculating stock value" msgstr "" -#: common/models.py:2032 +#: common/models.py:2055 msgid "Exclude External Locations" msgstr "" -#: common/models.py:2034 +#: common/models.py:2057 msgid "Exclude stock items in external locations from stocktake calculations" msgstr "" -#: common/models.py:2040 +#: common/models.py:2063 msgid "Automatic Stocktake Period" msgstr "" -#: common/models.py:2042 +#: common/models.py:2065 msgid "Number of days between automatic stocktake recording (set to zero to disable)" msgstr "" -#: common/models.py:2048 +#: common/models.py:2071 msgid "Report Deletion Interval" msgstr "" -#: common/models.py:2050 +#: common/models.py:2073 msgid "Stocktake reports will be deleted after specified number of days" msgstr "" -#: common/models.py:2057 +#: common/models.py:2080 msgid "Display Users full names" msgstr "" -#: common/models.py:2058 +#: common/models.py:2081 msgid "Display Users full names instead of usernames" msgstr "" -#: common/models.py:2063 +#: common/models.py:2086 msgid "Enable Test Station Data" msgstr "" -#: common/models.py:2064 +#: common/models.py:2087 msgid "Enable test station data collection for test results" msgstr "" -#: common/models.py:2076 common/models.py:2486 +#: common/models.py:2099 common/models.py:2509 msgid "Settings key (must be unique - case insensitive" msgstr "" -#: common/models.py:2119 +#: common/models.py:2142 msgid "Hide inactive parts" msgstr "" -#: common/models.py:2121 +#: common/models.py:2144 msgid "Hide inactive parts in results displayed on the homepage" msgstr "" -#: common/models.py:2127 +#: common/models.py:2150 msgid "Show subscribed parts" msgstr "" -#: common/models.py:2128 +#: common/models.py:2151 msgid "Show subscribed parts on the homepage" msgstr "" -#: common/models.py:2133 +#: common/models.py:2156 msgid "Show subscribed categories" msgstr "" -#: common/models.py:2134 +#: common/models.py:2157 msgid "Show subscribed part categories on the homepage" msgstr "" -#: common/models.py:2139 +#: common/models.py:2162 msgid "Show latest parts" msgstr "" -#: common/models.py:2140 +#: common/models.py:2163 msgid "Show latest parts on the homepage" msgstr "" -#: common/models.py:2145 +#: common/models.py:2168 msgid "Show invalid BOMs" msgstr "" -#: common/models.py:2146 +#: common/models.py:2169 msgid "Show BOMs that await validation on the homepage" msgstr "" -#: common/models.py:2151 +#: common/models.py:2174 msgid "Show recent stock changes" msgstr "" -#: common/models.py:2152 +#: common/models.py:2175 msgid "Show recently changed stock items on the homepage" msgstr "" -#: common/models.py:2157 +#: common/models.py:2180 msgid "Show low stock" msgstr "" -#: common/models.py:2158 +#: common/models.py:2181 msgid "Show low stock items on the homepage" msgstr "" -#: common/models.py:2163 +#: common/models.py:2186 msgid "Show depleted stock" msgstr "" -#: common/models.py:2164 +#: common/models.py:2187 msgid "Show depleted stock items on the homepage" msgstr "" -#: common/models.py:2169 +#: common/models.py:2192 msgid "Show needed stock" msgstr "" -#: common/models.py:2170 +#: common/models.py:2193 msgid "Show stock items needed for builds on the homepage" msgstr "" -#: common/models.py:2175 +#: common/models.py:2198 msgid "Show expired stock" msgstr "" -#: common/models.py:2176 +#: common/models.py:2199 msgid "Show expired stock items on the homepage" msgstr "" -#: common/models.py:2181 +#: common/models.py:2204 msgid "Show stale stock" msgstr "" -#: common/models.py:2182 +#: common/models.py:2205 msgid "Show stale stock items on the homepage" msgstr "" -#: common/models.py:2187 +#: common/models.py:2210 msgid "Show pending builds" msgstr "" -#: common/models.py:2188 +#: common/models.py:2211 msgid "Show pending builds on the homepage" msgstr "" -#: common/models.py:2193 +#: common/models.py:2216 msgid "Show overdue builds" msgstr "" -#: common/models.py:2194 +#: common/models.py:2217 msgid "Show overdue builds on the homepage" msgstr "" -#: common/models.py:2199 +#: common/models.py:2222 msgid "Show outstanding POs" msgstr "" -#: common/models.py:2200 +#: common/models.py:2223 msgid "Show outstanding POs on the homepage" msgstr "" -#: common/models.py:2205 +#: common/models.py:2228 msgid "Show overdue POs" msgstr "" -#: common/models.py:2206 +#: common/models.py:2229 msgid "Show overdue POs on the homepage" msgstr "" -#: common/models.py:2211 +#: common/models.py:2234 msgid "Show outstanding SOs" msgstr "" -#: common/models.py:2212 +#: common/models.py:2235 msgid "Show outstanding SOs on the homepage" msgstr "" -#: common/models.py:2217 +#: common/models.py:2240 msgid "Show overdue SOs" msgstr "" -#: common/models.py:2218 +#: common/models.py:2241 msgid "Show overdue SOs on the homepage" msgstr "" -#: common/models.py:2223 +#: common/models.py:2246 msgid "Show pending SO shipments" msgstr "" -#: common/models.py:2224 +#: common/models.py:2247 msgid "Show pending SO shipments on the homepage" msgstr "" -#: common/models.py:2229 +#: common/models.py:2252 msgid "Show News" msgstr "" -#: common/models.py:2230 +#: common/models.py:2253 msgid "Show news on the homepage" msgstr "" -#: common/models.py:2235 +#: common/models.py:2258 msgid "Inline label display" msgstr "" -#: common/models.py:2237 +#: common/models.py:2260 msgid "Display PDF labels in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2243 +#: common/models.py:2266 msgid "Default label printer" msgstr "" -#: common/models.py:2245 +#: common/models.py:2268 msgid "Configure which label printer should be selected by default" msgstr "" -#: common/models.py:2251 +#: common/models.py:2274 msgid "Inline report display" msgstr "" -#: common/models.py:2253 +#: common/models.py:2276 msgid "Display PDF reports in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2259 +#: common/models.py:2282 msgid "Search Parts" msgstr "" -#: common/models.py:2260 +#: common/models.py:2283 msgid "Display parts in search preview window" msgstr "" -#: common/models.py:2265 +#: common/models.py:2288 msgid "Search Supplier Parts" msgstr "" -#: common/models.py:2266 +#: common/models.py:2289 msgid "Display supplier parts in search preview window" msgstr "" -#: common/models.py:2271 +#: common/models.py:2294 msgid "Search Manufacturer Parts" msgstr "" -#: common/models.py:2272 +#: common/models.py:2295 msgid "Display manufacturer parts in search preview window" msgstr "" -#: common/models.py:2277 +#: common/models.py:2300 msgid "Hide Inactive Parts" msgstr "" -#: common/models.py:2278 +#: common/models.py:2301 msgid "Excluded inactive parts from search preview window" msgstr "" -#: common/models.py:2283 +#: common/models.py:2306 msgid "Search Categories" msgstr "" -#: common/models.py:2284 +#: common/models.py:2307 msgid "Display part categories in search preview window" msgstr "" -#: common/models.py:2289 +#: common/models.py:2312 msgid "Search Stock" msgstr "" -#: common/models.py:2290 +#: common/models.py:2313 msgid "Display stock items in search preview window" msgstr "" -#: common/models.py:2295 +#: common/models.py:2318 msgid "Hide Unavailable Stock Items" msgstr "" -#: common/models.py:2297 +#: common/models.py:2320 msgid "Exclude stock items which are not available from the search preview window" msgstr "" -#: common/models.py:2303 +#: common/models.py:2326 msgid "Search Locations" msgstr "" -#: common/models.py:2304 +#: common/models.py:2327 msgid "Display stock locations in search preview window" msgstr "" -#: common/models.py:2309 +#: common/models.py:2332 msgid "Search Companies" msgstr "" -#: common/models.py:2310 +#: common/models.py:2333 msgid "Display companies in search preview window" msgstr "" -#: common/models.py:2315 +#: common/models.py:2338 msgid "Search Build Orders" msgstr "" -#: common/models.py:2316 +#: common/models.py:2339 msgid "Display build orders in search preview window" msgstr "" -#: common/models.py:2321 +#: common/models.py:2344 msgid "Search Purchase Orders" msgstr "" -#: common/models.py:2322 +#: common/models.py:2345 msgid "Display purchase orders in search preview window" msgstr "" -#: common/models.py:2327 +#: common/models.py:2350 msgid "Exclude Inactive Purchase Orders" msgstr "" -#: common/models.py:2329 +#: common/models.py:2352 msgid "Exclude inactive purchase orders from search preview window" msgstr "" -#: common/models.py:2335 +#: common/models.py:2358 msgid "Search Sales Orders" msgstr "" -#: common/models.py:2336 +#: common/models.py:2359 msgid "Display sales orders in search preview window" msgstr "" -#: common/models.py:2341 +#: common/models.py:2364 msgid "Exclude Inactive Sales Orders" msgstr "" -#: common/models.py:2343 +#: common/models.py:2366 msgid "Exclude inactive sales orders from search preview window" msgstr "" -#: common/models.py:2349 +#: common/models.py:2372 msgid "Search Return Orders" msgstr "" -#: common/models.py:2350 +#: common/models.py:2373 msgid "Display return orders in search preview window" msgstr "" -#: common/models.py:2355 +#: common/models.py:2378 msgid "Exclude Inactive Return Orders" msgstr "" -#: common/models.py:2357 +#: common/models.py:2380 msgid "Exclude inactive return orders from search preview window" msgstr "" -#: common/models.py:2363 +#: common/models.py:2386 msgid "Search Preview Results" msgstr "" -#: common/models.py:2365 +#: common/models.py:2388 msgid "Number of results to show in each section of the search preview window" msgstr "" -#: common/models.py:2371 +#: common/models.py:2394 msgid "Regex Search" msgstr "" -#: common/models.py:2372 +#: common/models.py:2395 msgid "Enable regular expressions in search queries" msgstr "" -#: common/models.py:2377 +#: common/models.py:2400 msgid "Whole Word Search" msgstr "" -#: common/models.py:2378 +#: common/models.py:2401 msgid "Search queries return results for whole word matches" msgstr "" -#: common/models.py:2383 +#: common/models.py:2406 msgid "Show Quantity in Forms" msgstr "" -#: common/models.py:2384 +#: common/models.py:2407 msgid "Display available part quantity in some forms" msgstr "" -#: common/models.py:2389 +#: common/models.py:2412 msgid "Escape Key Closes Forms" msgstr "" -#: common/models.py:2390 +#: common/models.py:2413 msgid "Use the escape key to close modal forms" msgstr "" -#: common/models.py:2395 +#: common/models.py:2418 msgid "Fixed Navbar" msgstr "" -#: common/models.py:2396 +#: common/models.py:2419 msgid "The navbar position is fixed to the top of the screen" msgstr "" -#: common/models.py:2401 +#: common/models.py:2424 msgid "Date Format" msgstr "" -#: common/models.py:2402 +#: common/models.py:2425 msgid "Preferred format for displaying dates" msgstr "" -#: common/models.py:2415 part/templates/part/detail.html:41 +#: common/models.py:2438 part/templates/part/detail.html:41 msgid "Part Scheduling" msgstr "" -#: common/models.py:2416 +#: common/models.py:2439 msgid "Display part scheduling information" msgstr "" -#: common/models.py:2421 part/templates/part/detail.html:62 +#: common/models.py:2444 part/templates/part/detail.html:62 msgid "Part Stocktake" msgstr "" -#: common/models.py:2423 +#: common/models.py:2446 msgid "Display part stocktake information (if stocktake functionality is enabled)" msgstr "" -#: common/models.py:2429 +#: common/models.py:2452 msgid "Table String Length" msgstr "" -#: common/models.py:2431 +#: common/models.py:2454 msgid "Maximum length limit for strings displayed in table views" msgstr "" -#: common/models.py:2437 +#: common/models.py:2460 msgid "Default part label template" msgstr "" -#: common/models.py:2438 +#: common/models.py:2461 msgid "The part label template to be automatically selected" msgstr "" -#: common/models.py:2443 +#: common/models.py:2466 msgid "Default stock item template" msgstr "" -#: common/models.py:2445 +#: common/models.py:2468 msgid "The stock item label template to be automatically selected" msgstr "" -#: common/models.py:2451 +#: common/models.py:2474 msgid "Default stock location label template" msgstr "" -#: common/models.py:2453 +#: common/models.py:2476 msgid "The stock location label template to be automatically selected" msgstr "" -#: common/models.py:2459 +#: common/models.py:2482 msgid "Default build line label template" msgstr "" -#: common/models.py:2461 +#: common/models.py:2484 msgid "The build line label template to be automatically selected" msgstr "" -#: common/models.py:2467 +#: common/models.py:2490 msgid "Receive error reports" msgstr "" -#: common/models.py:2468 +#: common/models.py:2491 msgid "Receive notifications for system errors" msgstr "" -#: common/models.py:2473 +#: common/models.py:2496 msgid "Last used printing machines" msgstr "" -#: common/models.py:2474 +#: common/models.py:2497 msgid "Save the last used printing machines for a user" msgstr "" -#: common/models.py:2517 +#: common/models.py:2540 msgid "Price break quantity" msgstr "" -#: common/models.py:2524 company/serializers.py:496 order/admin.py:42 -#: order/models.py:1333 order/models.py:2241 +#: common/models.py:2547 company/serializers.py:496 order/admin.py:42 +#: order/models.py:1382 order/models.py:2301 #: templates/js/translated/company.js:1823 templates/js/translated/part.js:1885 #: templates/js/translated/pricing.js:621 -#: templates/js/translated/return_order.js:741 +#: templates/js/translated/return_order.js:740 msgid "Price" msgstr "" -#: common/models.py:2525 +#: common/models.py:2548 msgid "Unit price at specified quantity" msgstr "" -#: common/models.py:2696 common/models.py:2881 +#: common/models.py:2719 common/models.py:2904 msgid "Endpoint" msgstr "" -#: common/models.py:2697 +#: common/models.py:2720 msgid "Endpoint at which this webhook is received" msgstr "" -#: common/models.py:2707 +#: common/models.py:2730 msgid "Name for this webhook" msgstr "" -#: common/models.py:2711 company/models.py:160 company/models.py:813 -#: machine/models.py:39 part/admin.py:88 part/models.py:1045 -#: plugin/models.py:56 templates/js/translated/company.js:523 +#: common/models.py:2734 company/models.py:160 company/models.py:814 +#: machine/models.py:39 part/admin.py:88 part/models.py:1088 +#: plugin/models.py:65 templates/js/translated/company.js:523 #: templates/js/translated/table_filters.js:135 #: templates/js/translated/table_filters.js:219 #: templates/js/translated/table_filters.js:492 @@ -3586,135 +3464,135 @@ msgstr "" msgid "Active" msgstr "" -#: common/models.py:2711 +#: common/models.py:2734 msgid "Is this webhook active" msgstr "" -#: common/models.py:2727 users/models.py:159 +#: common/models.py:2750 users/models.py:159 msgid "Token" msgstr "" -#: common/models.py:2728 +#: common/models.py:2751 msgid "Token for access" msgstr "" -#: common/models.py:2736 +#: common/models.py:2759 msgid "Secret" msgstr "" -#: common/models.py:2737 +#: common/models.py:2760 msgid "Shared secret for HMAC" msgstr "" -#: common/models.py:2845 +#: common/models.py:2868 msgid "Message ID" msgstr "" -#: common/models.py:2846 +#: common/models.py:2869 msgid "Unique identifier for this message" msgstr "" -#: common/models.py:2854 +#: common/models.py:2877 msgid "Host" msgstr "" -#: common/models.py:2855 +#: common/models.py:2878 msgid "Host from which this message was received" msgstr "" -#: common/models.py:2863 +#: common/models.py:2886 msgid "Header" msgstr "" -#: common/models.py:2864 +#: common/models.py:2887 msgid "Header of this message" msgstr "" -#: common/models.py:2871 +#: common/models.py:2894 msgid "Body" msgstr "" -#: common/models.py:2872 +#: common/models.py:2895 msgid "Body of this message" msgstr "" -#: common/models.py:2882 +#: common/models.py:2905 msgid "Endpoint on which this message was received" msgstr "" -#: common/models.py:2887 +#: common/models.py:2910 msgid "Worked on" msgstr "" -#: common/models.py:2888 +#: common/models.py:2911 msgid "Was the work on this message finished?" msgstr "" -#: common/models.py:3014 +#: common/models.py:3037 msgid "Id" msgstr "" -#: common/models.py:3016 templates/js/translated/company.js:965 +#: common/models.py:3039 templates/js/translated/company.js:965 #: templates/js/translated/news.js:44 msgid "Title" msgstr "" -#: common/models.py:3020 templates/js/translated/news.js:60 +#: common/models.py:3043 templates/js/translated/news.js:60 msgid "Published" msgstr "" -#: common/models.py:3022 templates/InvenTree/settings/plugin_settings.html:32 +#: common/models.py:3045 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:3024 templates/js/translated/news.js:52 +#: common/models.py:3047 templates/js/translated/news.js:52 msgid "Summary" msgstr "" -#: common/models.py:3027 +#: common/models.py:3050 msgid "Read" msgstr "" -#: common/models.py:3027 +#: common/models.py:3050 msgid "Was this news item read?" msgstr "" -#: common/models.py:3044 company/models.py:156 part/models.py:929 +#: common/models.py:3067 company/models.py:156 part/models.py:972 #: 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 +#: report/templates/report/inventree_return_order_report.html:35 #: stock/templates/stock/item_base.html:133 templates/503.html:31 #: templates/hover_image.html:7 templates/hover_image.html:9 #: templates/modals.html:6 msgid "Image" msgstr "" -#: common/models.py:3044 +#: common/models.py:3067 msgid "Image file" msgstr "" -#: common/models.py:3086 +#: common/models.py:3109 msgid "Unit name must be a valid identifier" msgstr "" -#: common/models.py:3105 +#: common/models.py:3128 msgid "Unit name" msgstr "" -#: common/models.py:3112 templates/InvenTree/settings/settings_staff_js.html:75 +#: common/models.py:3135 templates/InvenTree/settings/settings_staff_js.html:75 msgid "Symbol" msgstr "" -#: common/models.py:3113 +#: common/models.py:3136 msgid "Optional unit symbol" msgstr "" -#: common/models.py:3120 templates/InvenTree/settings/settings_staff_js.html:71 +#: common/models.py:3143 templates/InvenTree/settings/settings_staff_js.html:71 msgid "Definition" msgstr "" -#: common/models.py:3121 +#: common/models.py:3144 msgid "Unit definition" msgstr "" @@ -3736,7 +3614,7 @@ msgstr "" msgid "A order that is assigned to you was canceled" msgstr "" -#: common/notifications.py:330 common/notifications.py:337 order/api.py:468 +#: common/notifications.py:330 common/notifications.py:337 order/api.py:472 msgid "Items Received" msgstr "" @@ -3752,63 +3630,63 @@ msgstr "" msgid "Error raised by plugin" msgstr "" -#: common/serializers.py:333 +#: common/serializers.py:366 msgid "Is Running" msgstr "" -#: common/serializers.py:339 +#: common/serializers.py:372 msgid "Pending Tasks" msgstr "" -#: common/serializers.py:345 +#: common/serializers.py:378 msgid "Scheduled Tasks" msgstr "" -#: common/serializers.py:351 +#: common/serializers.py:384 msgid "Failed Tasks" msgstr "" -#: common/serializers.py:366 +#: common/serializers.py:399 msgid "Task ID" msgstr "" -#: common/serializers.py:366 +#: common/serializers.py:399 msgid "Unique task ID" msgstr "" -#: common/serializers.py:368 +#: common/serializers.py:401 msgid "Lock" msgstr "" -#: common/serializers.py:368 +#: common/serializers.py:401 msgid "Lock time" msgstr "" -#: common/serializers.py:370 +#: common/serializers.py:403 msgid "Task name" msgstr "" -#: common/serializers.py:372 +#: common/serializers.py:405 msgid "Function" msgstr "" -#: common/serializers.py:372 +#: common/serializers.py:405 msgid "Function name" msgstr "" -#: common/serializers.py:374 +#: common/serializers.py:407 msgid "Arguments" msgstr "" -#: common/serializers.py:374 +#: common/serializers.py:407 msgid "Task arguments" msgstr "" -#: common/serializers.py:377 +#: common/serializers.py:410 msgid "Keyword Arguments" msgstr "" -#: common/serializers.py:377 +#: common/serializers.py:410 msgid "Task keyword arguments" msgstr "" @@ -3901,9 +3779,9 @@ msgid "Contact email address" msgstr "" #: company/models.py:139 company/templates/company/company_base.html:145 -#: order/models.py:331 order/templates/order/order_base.html:203 +#: order/models.py:343 order/templates/order/order_base.html:203 #: order/templates/order/return_order_base.html:174 -#: order/templates/order/sales_order_base.html:214 +#: order/templates/order/sales_order_base.html:218 msgid "Contact" msgstr "" @@ -3949,7 +3827,7 @@ msgstr "" #: company/models.py:273 company/models.py:382 #: company/templates/company/company_base.html:8 -#: company/templates/company/company_base.html:12 stock/api.py:776 +#: company/templates/company/company_base.html:12 stock/api.py:812 #: templates/InvenTree/search.html:178 templates/js/translated/company.js:496 msgid "Company" msgstr "" @@ -4041,19 +3919,19 @@ msgstr "" msgid "Link to address information (external)" msgstr "" -#: company/models.py:489 company/models.py:791 stock/models.py:751 -#: stock/serializers.py:266 stock/templates/stock/item_base.html:142 +#: company/models.py:489 company/models.py:792 stock/models.py:768 +#: stock/serializers.py:395 stock/templates/stock/item_base.html:142 #: templates/js/translated/bom.js:622 msgid "Base Part" msgstr "" -#: company/models.py:491 company/models.py:793 +#: company/models.py:491 company/models.py:794 msgid "Select part" msgstr "" #: company/models.py:500 company/templates/company/company_base.html:82 #: company/templates/company/manufacturer_part.html:90 -#: company/templates/company/supplier_part.html:145 part/serializers.py:515 +#: company/templates/company/supplier_part.html:145 part/serializers.py:530 #: stock/templates/stock/item_base.html:207 #: templates/js/translated/company.js:507 #: templates/js/translated/company.js:1118 @@ -4068,13 +3946,13 @@ msgid "Select manufacturer" msgstr "" #: company/models.py:507 company/templates/company/manufacturer_part.html:101 -#: company/templates/company/supplier_part.html:153 part/serializers.py:525 +#: company/templates/company/supplier_part.html:153 part/serializers.py:540 #: templates/js/translated/company.js:351 #: templates/js/translated/company.js:1117 #: templates/js/translated/company.js:1312 #: templates/js/translated/company.js:1630 templates/js/translated/part.js:1800 -#: templates/js/translated/purchase_order.js:1852 -#: templates/js/translated/purchase_order.js:2054 +#: templates/js/translated/purchase_order.js:1851 +#: templates/js/translated/purchase_order.js:2053 msgid "MPN" msgstr "" @@ -4086,61 +3964,60 @@ msgstr "" msgid "URL for external manufacturer part link" msgstr "" -#: company/models.py:523 +#: company/models.py:524 msgid "Manufacturer part description" msgstr "" -#: company/models.py:580 company/models.py:607 company/models.py:823 +#: company/models.py:581 company/models.py:608 company/models.py:824 #: company/templates/company/manufacturer_part.html:7 #: company/templates/company/manufacturer_part.html:24 #: stock/templates/stock/item_base.html:217 msgid "Manufacturer Part" msgstr "" -#: company/models.py:614 +#: company/models.py:615 msgid "Parameter name" msgstr "" -#: company/models.py:620 -#: report/templates/report/inventree_test_report_base.html:104 -#: stock/models.py:2436 templates/js/translated/company.js:1166 +#: company/models.py:621 report/templates/report/inventree_test_report.html:104 +#: stock/models.py:2429 templates/js/translated/company.js:1166 #: templates/js/translated/company.js:1419 templates/js/translated/part.js:1492 -#: templates/js/translated/stock.js:1519 +#: templates/js/translated/stock.js:1522 msgid "Value" msgstr "" -#: company/models.py:621 +#: company/models.py:622 msgid "Parameter value" msgstr "" -#: company/models.py:628 company/templates/company/supplier_part.html:168 -#: part/admin.py:57 part/models.py:1009 part/models.py:3623 +#: company/models.py:629 company/templates/company/supplier_part.html:168 +#: part/admin.py:57 part/models.py:1052 part/models.py:3666 #: part/templates/part/part_base.html:284 #: templates/js/translated/company.js:1425 templates/js/translated/part.js:1511 -#: templates/js/translated/part.js:1615 templates/js/translated/part.js:2370 +#: templates/js/translated/part.js:1615 templates/js/translated/part.js:2369 msgid "Units" msgstr "" -#: company/models.py:629 +#: company/models.py:630 msgid "Parameter units" msgstr "" -#: company/models.py:731 +#: company/models.py:732 msgid "Pack units must be compatible with the base part units" msgstr "" -#: company/models.py:738 +#: company/models.py:739 msgid "Pack units must be greater than zero" msgstr "" -#: company/models.py:752 +#: company/models.py:753 msgid "Linked manufacturer part must reference the same base part" msgstr "" -#: company/models.py:801 company/templates/company/company_base.html:87 -#: company/templates/company/supplier_part.html:129 order/models.py:465 +#: company/models.py:802 company/templates/company/company_base.html:87 +#: company/templates/company/supplier_part.html:129 order/models.py:486 #: order/templates/order/order_base.html:136 part/bom.py:272 part/bom.py:310 -#: part/serializers.py:499 plugin/builtin/suppliers/digikey.py:25 +#: part/serializers.py:514 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 @@ -4148,97 +4025,97 @@ msgstr "" #: templates/js/translated/company.js:511 #: templates/js/translated/company.js:1584 templates/js/translated/part.js:1768 #: templates/js/translated/pricing.js:498 -#: templates/js/translated/purchase_order.js:1690 +#: templates/js/translated/purchase_order.js:1689 #: templates/js/translated/table_filters.js:804 msgid "Supplier" msgstr "" -#: company/models.py:802 +#: company/models.py:803 msgid "Select supplier" msgstr "" -#: company/models.py:808 part/serializers.py:510 +#: company/models.py:809 part/serializers.py:525 msgid "Supplier stock keeping unit" msgstr "" -#: company/models.py:814 +#: company/models.py:815 msgid "Is this supplier part active?" msgstr "" -#: company/models.py:824 +#: company/models.py:825 msgid "Select manufacturer part" msgstr "" -#: company/models.py:831 +#: company/models.py:832 msgid "URL for external supplier part link" msgstr "" -#: company/models.py:839 +#: company/models.py:841 msgid "Supplier part description" msgstr "" -#: company/models.py:846 company/templates/company/supplier_part.html:187 -#: part/admin.py:418 part/models.py:4070 part/templates/part/upload_bom.html:59 +#: company/models.py:848 company/templates/company/supplier_part.html:187 +#: part/admin.py:420 part/models.py:4113 part/templates/part/upload_bom.html:59 #: 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 +#: report/templates/report/inventree_purchase_order_report.html:32 +#: report/templates/report/inventree_return_order_report.html:27 +#: report/templates/report/inventree_sales_order_report.html:32 +#: report/templates/report/inventree_stock_location_report.html:105 +#: stock/serializers.py:708 msgid "Note" msgstr "" -#: company/models.py:855 part/models.py:1967 +#: company/models.py:857 part/models.py:2010 msgid "base cost" msgstr "" -#: company/models.py:856 part/models.py:1968 +#: company/models.py:858 part/models.py:2011 msgid "Minimum charge (e.g. stocking fee)" msgstr "" -#: company/models.py:863 company/templates/company/supplier_part.html:160 -#: stock/admin.py:224 stock/models.py:782 stock/serializers.py:1350 +#: company/models.py:865 company/templates/company/supplier_part.html:160 +#: stock/admin.py:224 stock/models.py:799 stock/serializers.py:1479 #: stock/templates/stock/item_base.html:240 #: templates/js/translated/company.js:1646 -#: templates/js/translated/stock.js:2423 +#: templates/js/translated/stock.js:2424 msgid "Packaging" msgstr "" -#: company/models.py:864 +#: company/models.py:866 msgid "Part packaging" msgstr "" -#: company/models.py:869 templates/js/translated/company.js:1651 +#: company/models.py:871 templates/js/translated/company.js:1651 #: 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 +#: templates/js/translated/purchase_order.js:2084 +#: templates/js/translated/purchase_order.js:2101 msgid "Pack Quantity" msgstr "" -#: company/models.py:871 +#: company/models.py:873 msgid "Total quantity supplied in a single pack. Leave empty for single items." msgstr "" -#: company/models.py:890 part/models.py:1974 +#: company/models.py:892 part/models.py:2017 msgid "multiple" msgstr "" -#: company/models.py:891 +#: company/models.py:893 msgid "Order multiple" msgstr "" -#: company/models.py:903 +#: company/models.py:905 msgid "Quantity available from supplier" msgstr "" -#: company/models.py:909 +#: company/models.py:911 msgid "Availability Updated" msgstr "" -#: company/models.py:910 +#: company/models.py:912 msgid "Date of last update of availability data" msgstr "" @@ -4257,7 +4134,7 @@ msgstr "" #: part/templates/part/part_base.html:146 #: templates/js/translated/company.js:1287 #: templates/js/translated/company.js:1575 -#: templates/js/translated/model_renderers.js:306 +#: templates/js/translated/model_renderers.js:312 #: templates/js/translated/part.js:814 templates/js/translated/part.js:1218 msgid "Inactive" msgstr "" @@ -4293,11 +4170,11 @@ msgstr "" #: 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 +#: report/templates/report/inventree_build_order_report.html:98 +#: report/templates/report/inventree_purchase_order_report.html:40 +#: report/templates/report/inventree_sales_order_report.html:40 +#: report/templates/report/inventree_test_report.html:84 +#: report/templates/report/inventree_test_report.html:163 msgid "Part image" msgstr "" @@ -4316,15 +4193,15 @@ msgstr "" msgid "Delete image" msgstr "" -#: company/templates/company/company_base.html:92 order/models.py:910 -#: order/models.py:2008 order/templates/order/return_order_base.html:131 -#: order/templates/order/sales_order_base.html:144 stock/models.py:804 -#: stock/models.py:805 stock/serializers.py:1100 +#: company/templates/company/company_base.html:92 order/models.py:940 +#: order/models.py:2068 order/templates/order/return_order_base.html:131 +#: order/templates/order/sales_order_base.html:148 stock/models.py:821 +#: stock/models.py:822 stock/serializers.py:1229 #: stock/templates/stock/item_base.html:405 #: templates/email/overdue_sales_order.html:16 #: templates/js/translated/company.js:503 -#: templates/js/translated/return_order.js:296 -#: templates/js/translated/sales_order.js:784 +#: templates/js/translated/return_order.js:295 +#: templates/js/translated/sales_order.js:820 #: templates/js/translated/stock.js:2959 #: templates/js/translated/table_filters.js:808 msgid "Customer" @@ -4334,10 +4211,10 @@ msgstr "" msgid "Uses default currency" msgstr "" -#: company/templates/company/company_base.html:124 order/models.py:341 +#: company/templates/company/company_base.html:124 order/models.py:353 #: order/templates/order/order_base.html:210 #: order/templates/order/return_order_base.html:181 -#: order/templates/order/sales_order_base.html:221 +#: order/templates/order/sales_order_base.html:225 msgid "Address" msgstr "" @@ -4346,7 +4223,7 @@ msgid "Phone" msgstr "" #: company/templates/company/company_base.html:211 -#: part/templates/part/part_base.html:528 +#: part/templates/part/part_base.html:527 msgid "Remove Image" msgstr "" @@ -4355,19 +4232,19 @@ msgid "Remove associated image from this company" msgstr "" #: company/templates/company/company_base.html:214 -#: part/templates/part/part_base.html:531 +#: part/templates/part/part_base.html:530 #: templates/InvenTree/settings/user.html:88 #: templates/InvenTree/settings/user_sso.html:43 msgid "Remove" msgstr "" #: company/templates/company/company_base.html:243 -#: part/templates/part/part_base.html:560 +#: part/templates/part/part_base.html:559 msgid "Upload Image" msgstr "" #: company/templates/company/company_base.html:258 -#: part/templates/part/part_base.html:614 +#: part/templates/part/part_base.html:613 msgid "Download Image" msgstr "" @@ -4520,7 +4397,7 @@ msgid "Delete manufacturer part" msgstr "" #: company/templates/company/manufacturer_part.html:65 -#: company/templates/company/supplier_part.html:97 order/api.py:454 +#: company/templates/company/supplier_part.html:97 order/api.py:458 msgid "Internal Part" msgstr "" @@ -4530,7 +4407,7 @@ msgstr "" #: company/templates/company/manufacturer_part.html:119 #: company/templates/company/supplier_part.html:15 company/views.py:31 -#: part/admin.py:122 part/serializers.py:821 +#: part/admin.py:122 part/serializers.py:836 #: part/templates/part/part_sidebar.html:33 templates/InvenTree/search.html:190 #: templates/navbar.html:48 msgid "Suppliers" @@ -4580,11 +4457,11 @@ msgid "Addresses" msgstr "" #: company/templates/company/supplier_part.html:7 -#: company/templates/company/supplier_part.html:24 order/api.py:448 -#: stock/models.py:762 stock/templates/stock/item_base.html:233 +#: company/templates/company/supplier_part.html:24 order/api.py:452 +#: stock/models.py:779 stock/templates/stock/item_base.html:233 #: templates/js/translated/company.js:1600 #: templates/js/translated/purchase_order.js:752 -#: templates/js/translated/stock.js:2279 +#: templates/js/translated/stock.js:2280 msgid "Supplier Part" msgstr "" @@ -4630,11 +4507,11 @@ 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 +#: part/bom.py:311 part/serializers.py:524 #: 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 +#: templates/js/translated/purchase_order.js:1850 +#: templates/js/translated/purchase_order.js:2028 msgid "SKU" msgstr "" @@ -4643,12 +4520,12 @@ msgid "Supplier Part Stock" msgstr "" #: company/templates/company/supplier_part.html:209 -#: part/templates/part/detail.html:24 stock/templates/stock/location.html:199 +#: part/templates/part/detail.html:24 stock/templates/stock/location.html:206 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 +#: part/templates/part/detail.html:25 stock/templates/stock/location.html:207 #: templates/js/translated/stock.js:537 msgid "New Stock Item" msgstr "" @@ -4680,13 +4557,13 @@ msgid "Update Part Availability" msgstr "" #: company/templates/company/supplier_part_sidebar.html:5 -#: part/serializers.py:820 part/stocktake.py:223 +#: part/serializers.py:835 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/serializers.py:916 stock/serializers.py:1080 #: stock/templates/stock/location.html:170 -#: stock/templates/stock/location.html:184 -#: stock/templates/stock/location.html:196 +#: stock/templates/stock/location.html:191 +#: stock/templates/stock/location.html:203 #: stock/templates/stock/location_sidebar.html:7 #: templates/InvenTree/search.html:155 templates/js/translated/part.js:1060 #: templates/js/translated/search.js:172 templates/js/translated/stock.js:2766 @@ -4723,126 +4600,52 @@ msgstr "" msgid "New Company" msgstr "" -#: label/api.py:247 -msgid "Error printing label" -msgstr "" +#: generic/states/tests.py:18 order/status_codes.py:13 +msgid "Placed" +msgstr "Placeret" -#: 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:3494 report/models.py:324 -#: 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:317 -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:345 report/models.py:496 -#: report/models.py:532 report/models.py:568 report/models.py:750 -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 +#: machine/machine_types/label_printer.py:218 msgid "Copies" msgstr "" -#: machine/machine_types/label_printer.py:218 +#: machine/machine_types/label_printer.py:219 msgid "Number of copies to print for each label" msgstr "" -#: machine/machine_types/label_printer.py:233 +#: machine/machine_types/label_printer.py:234 msgid "Connected" msgstr "" -#: machine/machine_types/label_printer.py:234 order/api.py:1511 -#: templates/js/translated/sales_order.js:1042 +#: machine/machine_types/label_printer.py:235 order/api.py:1515 +#: templates/js/translated/sales_order.js:1078 msgid "Unknown" msgstr "" -#: machine/machine_types/label_printer.py:235 +#: machine/machine_types/label_printer.py:236 msgid "Printing" msgstr "" -#: machine/machine_types/label_printer.py:236 +#: machine/machine_types/label_printer.py:237 msgid "No media" msgstr "" -#: machine/machine_types/label_printer.py:237 +#: machine/machine_types/label_printer.py:238 msgid "Disconnected" msgstr "" -#: machine/machine_types/label_printer.py:244 +#: machine/machine_types/label_printer.py:245 msgid "Label Printer" msgstr "" -#: machine/machine_types/label_printer.py:245 +#: machine/machine_types/label_printer.py:246 msgid "Directly print labels for various items." msgstr "" -#: machine/machine_types/label_printer.py:251 +#: machine/machine_types/label_printer.py:252 msgid "Printer Location" msgstr "" -#: machine/machine_types/label_printer.py:252 +#: machine/machine_types/label_printer.py:253 msgid "Scope the printer to a specific location" msgstr "" @@ -4903,63 +4706,64 @@ 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 +#: report/templates/report/inventree_purchase_order_report.html:31 +#: report/templates/report/inventree_sales_order_report.html:31 #: templates/js/translated/order.js:327 -#: templates/js/translated/purchase_order.js:2126 -#: templates/js/translated/sales_order.js:1847 +#: templates/js/translated/purchase_order.js:2125 +#: templates/js/translated/sales_order.js:1883 msgid "Total Price" msgstr "" -#: order/api.py:157 order/templates/order/order_base.html:118 +#: order/api.py:161 order/serializers.py:91 +#: order/templates/order/order_base.html:118 #: order/templates/order/return_order_base.html:113 -#: order/templates/order/sales_order_base.html:118 +#: order/templates/order/sales_order_base.html:122 msgid "Order Status" msgstr "" -#: order/api.py:161 templates/js/translated/table_filters.js:194 +#: order/api.py:165 templates/js/translated/table_filters.js:194 #: templates/js/translated/table_filters.js:779 msgid "Has Pricing" msgstr "" -#: order/api.py:236 +#: order/api.py:240 msgid "No matching purchase order found" msgstr "" -#: order/api.py:433 order/api.py:813 order/models.py:1382 order/models.py:1489 -#: order/models.py:1535 order/models.py:1649 order/models.py:1803 -#: order/models.py:2207 order/models.py:2258 -#: templates/js/translated/sales_order.js:1488 +#: order/api.py:437 order/api.py:817 order/models.py:1431 order/models.py:1540 +#: order/models.py:1586 order/models.py:1700 order/models.py:1854 +#: order/models.py:2267 order/models.py:2318 +#: templates/js/translated/sales_order.js:1524 msgid "Order" msgstr "" -#: order/api.py:437 order/api.py:834 +#: order/api.py:441 order/api.py:838 msgid "Order Complete" msgstr "" -#: order/api.py:458 +#: order/api.py:462 msgid "Order Pending" msgstr "" -#: order/api.py:1505 order/models.py:1383 order/models.py:1490 -#: order/templates/order/order_base.html:9 +#: order/api.py:1509 order/models.py:380 order/models.py:1432 +#: order/models.py:1541 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 +#: report/templates/report/inventree_purchase_order_report.html:14 +#: stock/serializers.py:119 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 +#: templates/js/translated/purchase_order.js:1673 +#: templates/js/translated/stock.js:2260 templates/js/translated/stock.js:2907 msgid "Purchase Order" msgstr "" -#: order/api.py:1509 order/models.py:2208 order/models.py:2259 -#: order/templates/order/return_order_base.html:9 +#: order/api.py:1513 order/models.py:2017 order/models.py:2268 +#: order/models.py:2319 order/templates/order/return_order_base.html:9 #: order/templates/order/return_order_base.html:28 -#: report/templates/report/inventree_return_order_report_base.html:13 -#: templates/js/translated/return_order.js:281 +#: report/templates/report/inventree_return_order_report.html:13 +#: templates/js/translated/return_order.js:280 #: templates/js/translated/stock.js:2941 msgid "Return Order" msgstr "" @@ -4976,517 +4780,573 @@ msgstr "" msgid "Currency for this order (leave blank to use company default)" msgstr "" -#: order/models.py:246 +#: order/models.py:247 msgid "Contact does not match selected company" msgstr "" -#: order/models.py:278 +#: order/models.py:290 msgid "Order description (optional)" msgstr "" -#: order/models.py:287 +#: order/models.py:299 msgid "Select project code for this order" msgstr "" -#: order/models.py:291 order/models.py:1288 order/models.py:1702 +#: order/models.py:303 order/models.py:1337 order/models.py:1753 msgid "Link to external page" msgstr "" -#: order/models.py:299 +#: order/models.py:311 msgid "Expected date for order delivery. Order will be overdue after this date." msgstr "" -#: order/models.py:313 +#: order/models.py:325 msgid "Created By" msgstr "" -#: order/models.py:321 +#: order/models.py:333 msgid "User or group responsible for this order" msgstr "" -#: order/models.py:332 +#: order/models.py:344 msgid "Point of contact for this order" msgstr "" -#: order/models.py:342 +#: order/models.py:354 msgid "Company address for this order" msgstr "" -#: order/models.py:443 order/models.py:899 +#: order/models.py:464 order/models.py:929 msgid "Order reference" msgstr "" -#: order/models.py:451 order/models.py:923 +#: order/models.py:472 order/models.py:953 msgid "Purchase order status" msgstr "" -#: order/models.py:466 +#: order/models.py:487 msgid "Company from which the items are being ordered" msgstr "" -#: order/models.py:477 order/templates/order/order_base.html:148 -#: templates/js/translated/purchase_order.js:1703 +#: order/models.py:498 order/templates/order/order_base.html:148 +#: templates/js/translated/purchase_order.js:1702 msgid "Supplier Reference" msgstr "" -#: order/models.py:478 +#: order/models.py:499 msgid "Supplier order reference code" msgstr "" -#: order/models.py:487 +#: order/models.py:508 msgid "received by" msgstr "" -#: order/models.py:493 order/models.py:2034 +#: order/models.py:514 order/models.py:2094 msgid "Issue Date" msgstr "" -#: order/models.py:494 order/models.py:2035 +#: order/models.py:515 order/models.py:2095 msgid "Date order was issued" msgstr "" -#: order/models.py:501 order/models.py:2042 +#: order/models.py:522 order/models.py:2102 msgid "Date order was completed" msgstr "" -#: order/models.py:545 +#: order/models.py:566 msgid "Part supplier must match PO supplier" msgstr "" -#: order/models.py:739 +#: order/models.py:760 msgid "Quantity must be a positive number" msgstr "" -#: order/models.py:911 +#: order/models.py:941 msgid "Company to which the items are being sold" msgstr "" -#: order/models.py:934 order/models.py:2027 +#: order/models.py:964 order/models.py:2087 msgid "Customer Reference " msgstr "" -#: order/models.py:935 order/models.py:2028 +#: order/models.py:965 order/models.py:2088 msgid "Customer order reference code" msgstr "" -#: order/models.py:939 order/models.py:1656 -#: templates/js/translated/sales_order.js:843 -#: templates/js/translated/sales_order.js:1024 +#: order/models.py:969 order/models.py:1707 +#: templates/js/translated/sales_order.js:879 +#: templates/js/translated/sales_order.js:1060 msgid "Shipment Date" msgstr "" -#: order/models.py:948 +#: order/models.py:978 msgid "shipped by" msgstr "" -#: order/models.py:999 -msgid "Order cannot be completed as no parts have been assigned" +#: order/models.py:1027 +msgid "Order is already complete" msgstr "" -#: order/models.py:1004 +#: order/models.py:1030 +msgid "Order is already cancelled" +msgstr "" + +#: order/models.py:1034 msgid "Only an open order can be marked as complete" msgstr "" -#: order/models.py:1008 templates/js/translated/sales_order.js:506 +#: order/models.py:1038 msgid "Order cannot be completed as there are incomplete shipments" msgstr "" -#: order/models.py:1013 +#: order/models.py:1043 msgid "Order cannot be completed as there are incomplete line items" msgstr "" -#: order/models.py:1260 +#: order/models.py:1309 msgid "Item quantity" msgstr "" -#: order/models.py:1277 +#: order/models.py:1326 msgid "Line item reference" msgstr "" -#: order/models.py:1284 +#: order/models.py:1333 msgid "Line item notes" msgstr "" -#: order/models.py:1296 +#: order/models.py:1345 msgid "Target date for this line item (leave blank to use the target date from the order)" msgstr "" -#: order/models.py:1317 +#: order/models.py:1366 msgid "Line item description (optional)" msgstr "" -#: order/models.py:1323 +#: order/models.py:1372 msgid "Context" msgstr "" -#: order/models.py:1324 +#: order/models.py:1373 msgid "Additional context for this line" msgstr "" -#: order/models.py:1334 +#: order/models.py:1383 msgid "Unit price" msgstr "" -#: order/models.py:1367 +#: order/models.py:1416 msgid "Supplier part must match supplier" msgstr "" -#: order/models.py:1374 +#: order/models.py:1423 msgid "deleted" msgstr "" -#: order/models.py:1402 +#: order/models.py:1451 msgid "Supplier part" msgstr "" -#: order/models.py:1409 order/templates/order/order_base.html:196 +#: order/models.py:1458 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/purchase_order.js:2169 +#: templates/js/translated/return_order.js:763 #: templates/js/translated/table_filters.js:120 #: templates/js/translated/table_filters.js:602 msgid "Received" msgstr "" -#: order/models.py:1410 +#: order/models.py:1459 msgid "Number of items received" msgstr "" -#: order/models.py:1418 stock/models.py:923 stock/serializers.py:400 +#: order/models.py:1467 stock/models.py:940 stock/serializers.py:529 #: stock/templates/stock/item_base.html:183 -#: templates/js/translated/stock.js:2310 +#: templates/js/translated/stock.js:2311 msgid "Purchase Price" msgstr "" -#: order/models.py:1419 +#: order/models.py:1468 msgid "Unit purchase price" msgstr "" -#: order/models.py:1434 +#: order/models.py:1483 msgid "Where does the Purchaser want this item to be stored?" msgstr "" -#: order/models.py:1523 +#: order/models.py:1574 msgid "Virtual part cannot be assigned to a sales order" msgstr "" -#: order/models.py:1528 +#: order/models.py:1579 msgid "Only salable parts can be assigned to a sales order" msgstr "" -#: order/models.py:1554 part/templates/part/part_pricing.html:107 +#: order/models.py:1605 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:1555 +#: order/models.py:1606 msgid "Unit sale price" msgstr "" -#: order/models.py:1565 +#: order/models.py:1615 order/status_codes.py:43 +#: templates/js/translated/sales_order.js:1559 +#: templates/js/translated/sales_order.js:1680 +#: templates/js/translated/sales_order.js:1993 +msgid "Shipped" +msgstr "Afsendt" + +#: order/models.py:1616 msgid "Shipped quantity" msgstr "" -#: order/models.py:1657 +#: order/models.py:1708 msgid "Date of shipment" msgstr "" -#: order/models.py:1663 templates/js/translated/sales_order.js:1036 +#: order/models.py:1714 templates/js/translated/sales_order.js:1072 msgid "Delivery Date" msgstr "" -#: order/models.py:1664 +#: order/models.py:1715 msgid "Date of delivery of shipment" msgstr "" -#: order/models.py:1672 +#: order/models.py:1723 msgid "Checked By" msgstr "" -#: order/models.py:1673 +#: order/models.py:1724 msgid "User who checked this shipment" msgstr "" -#: order/models.py:1680 order/models.py:1893 order/serializers.py:1350 -#: order/serializers.py:1460 templates/js/translated/model_renderers.js:448 +#: order/models.py:1731 order/models.py:1944 order/serializers.py:1354 +#: order/serializers.py:1464 templates/js/translated/model_renderers.js:454 msgid "Shipment" msgstr "" -#: order/models.py:1681 +#: order/models.py:1732 msgid "Shipment number" msgstr "" -#: order/models.py:1689 +#: order/models.py:1740 msgid "Tracking Number" msgstr "" -#: order/models.py:1690 +#: order/models.py:1741 msgid "Shipment tracking information" msgstr "" -#: order/models.py:1697 +#: order/models.py:1748 msgid "Invoice Number" msgstr "" -#: order/models.py:1698 +#: order/models.py:1749 msgid "Reference number for associated invoice" msgstr "" -#: order/models.py:1718 +#: order/models.py:1769 msgid "Shipment has already been sent" msgstr "" -#: order/models.py:1721 +#: order/models.py:1772 msgid "Shipment has no allocated stock items" msgstr "" -#: order/models.py:1839 order/models.py:1841 +#: order/models.py:1890 order/models.py:1892 msgid "Stock item has not been assigned" msgstr "" -#: order/models.py:1848 +#: order/models.py:1899 msgid "Cannot allocate stock item to a line with a different part" msgstr "" -#: order/models.py:1851 +#: order/models.py:1902 msgid "Cannot allocate stock to a line without a part" msgstr "" -#: order/models.py:1854 +#: order/models.py:1905 msgid "Allocation quantity cannot exceed stock quantity" msgstr "" -#: order/models.py:1873 order/serializers.py:1227 +#: order/models.py:1924 order/serializers.py:1231 msgid "Quantity must be 1 for serialized stock item" msgstr "" -#: order/models.py:1876 +#: order/models.py:1927 msgid "Sales order does not match shipment" msgstr "" -#: order/models.py:1877 plugin/base/barcodes/api.py:481 +#: order/models.py:1928 plugin/base/barcodes/api.py:481 msgid "Shipment does not match sales order" msgstr "" -#: order/models.py:1885 +#: order/models.py:1936 msgid "Line" msgstr "" -#: order/models.py:1894 +#: order/models.py:1945 msgid "Sales order shipment reference" msgstr "" -#: order/models.py:1907 order/models.py:2215 -#: templates/js/translated/return_order.js:722 +#: order/models.py:1958 order/models.py:2275 +#: templates/js/translated/return_order.js:721 msgid "Item" msgstr "" -#: order/models.py:1908 +#: order/models.py:1959 msgid "Select stock item to allocate" msgstr "" -#: order/models.py:1917 +#: order/models.py:1968 msgid "Enter stock allocation quantity" msgstr "" -#: order/models.py:1997 +#: order/models.py:2057 msgid "Return Order reference" msgstr "" -#: order/models.py:2009 +#: order/models.py:2069 msgid "Company from which items are being returned" msgstr "" -#: order/models.py:2021 +#: order/models.py:2081 msgid "Return order status" msgstr "" -#: order/models.py:2200 +#: order/models.py:2260 msgid "Only serialized items can be assigned to a Return Order" msgstr "" -#: order/models.py:2216 +#: order/models.py:2276 msgid "Select item to return from customer" msgstr "" -#: order/models.py:2222 +#: order/models.py:2282 msgid "Received Date" msgstr "" -#: order/models.py:2223 +#: order/models.py:2283 msgid "The date this this return item was received" msgstr "" -#: order/models.py:2234 templates/js/translated/return_order.js:733 +#: order/models.py:2294 templates/js/translated/return_order.js:732 #: templates/js/translated/table_filters.js:123 msgid "Outcome" msgstr "" -#: order/models.py:2235 +#: order/models.py:2295 msgid "Outcome for this line item" msgstr "" -#: order/models.py:2242 +#: order/models.py:2302 msgid "Cost associated with return or repair for this line item" msgstr "" -#: order/serializers.py:283 +#: order/serializers.py:80 order/templates/order/po_sidebar.html:5 +#: order/templates/order/return_order_detail.html:18 +#: order/templates/order/so_sidebar.html:5 +#: report/templates/report/inventree_purchase_order_report.html:22 +#: report/templates/report/inventree_return_order_report.html:19 +#: report/templates/report/inventree_sales_order_report.html:22 +msgid "Line Items" +msgstr "" + +#: order/serializers.py:84 +msgid "Completed Lines" +msgstr "" + +#: order/serializers.py:287 msgid "Order cannot be cancelled" msgstr "" -#: order/serializers.py:298 order/serializers.py:1243 +#: order/serializers.py:302 order/serializers.py:1247 msgid "Allow order to be closed with incomplete line items" msgstr "" -#: order/serializers.py:308 order/serializers.py:1253 +#: order/serializers.py:312 order/serializers.py:1257 msgid "Order has incomplete line items" msgstr "" -#: order/serializers.py:436 +#: order/serializers.py:440 msgid "Order is not open" msgstr "" -#: order/serializers.py:457 +#: order/serializers.py:461 msgid "Auto Pricing" msgstr "" -#: order/serializers.py:459 +#: order/serializers.py:463 msgid "Automatically calculate purchase price based on supplier part data" msgstr "" -#: order/serializers.py:469 +#: order/serializers.py:473 msgid "Purchase price currency" msgstr "" -#: order/serializers.py:475 +#: order/serializers.py:479 msgid "Merge Items" msgstr "" -#: order/serializers.py:477 +#: order/serializers.py:481 msgid "Merge items with the same part, destination and target date into one line item" msgstr "" -#: order/serializers.py:495 +#: order/serializers.py:499 msgid "Supplier part must be specified" msgstr "" -#: order/serializers.py:498 +#: order/serializers.py:502 msgid "Purchase order must be specified" msgstr "" -#: order/serializers.py:506 +#: order/serializers.py:510 msgid "Supplier must match purchase order" msgstr "" -#: order/serializers.py:507 +#: order/serializers.py:511 msgid "Purchase order must match supplier" msgstr "" -#: order/serializers.py:546 order/serializers.py:1321 +#: order/serializers.py:550 order/serializers.py:1325 msgid "Line Item" msgstr "" -#: order/serializers.py:552 +#: order/serializers.py:556 msgid "Line item does not match purchase order" msgstr "" -#: order/serializers.py:562 order/serializers.py:670 order/serializers.py:1676 +#: order/serializers.py:566 order/serializers.py:674 order/serializers.py:1680 msgid "Select destination location for received items" msgstr "" -#: order/serializers.py:578 templates/js/translated/purchase_order.js:1130 +#: order/serializers.py:582 templates/js/translated/purchase_order.js:1130 msgid "Enter batch code for incoming stock items" msgstr "" -#: order/serializers.py:586 templates/js/translated/purchase_order.js:1154 +#: order/serializers.py:590 templates/js/translated/purchase_order.js:1154 msgid "Enter serial numbers for incoming stock items" msgstr "" -#: order/serializers.py:597 templates/js/translated/barcode.js:52 +#: order/serializers.py:601 templates/js/translated/barcode.js:52 msgid "Barcode" msgstr "" -#: order/serializers.py:598 +#: order/serializers.py:602 msgid "Scanned barcode" msgstr "" -#: order/serializers.py:614 +#: order/serializers.py:618 msgid "Barcode is already in use" msgstr "" -#: order/serializers.py:638 +#: order/serializers.py:642 msgid "An integer quantity must be provided for trackable parts" msgstr "" -#: order/serializers.py:686 order/serializers.py:1692 +#: order/serializers.py:690 order/serializers.py:1696 msgid "Line items must be provided" msgstr "" -#: order/serializers.py:702 +#: order/serializers.py:706 msgid "Destination location must be specified" msgstr "" -#: order/serializers.py:713 +#: order/serializers.py:717 msgid "Supplied barcode values must be unique" msgstr "" -#: order/serializers.py:1070 +#: order/serializers.py:1074 msgid "Sale price currency" msgstr "" -#: order/serializers.py:1130 +#: order/serializers.py:1134 msgid "No shipment details provided" msgstr "" -#: order/serializers.py:1191 order/serializers.py:1330 +#: order/serializers.py:1195 order/serializers.py:1334 msgid "Line item is not associated with this order" msgstr "" -#: order/serializers.py:1210 +#: order/serializers.py:1214 msgid "Quantity must be positive" msgstr "" -#: order/serializers.py:1340 +#: order/serializers.py:1344 msgid "Enter serial numbers to allocate" msgstr "" -#: order/serializers.py:1362 order/serializers.py:1468 +#: order/serializers.py:1366 order/serializers.py:1472 msgid "Shipment has already been shipped" msgstr "" -#: order/serializers.py:1365 order/serializers.py:1471 +#: order/serializers.py:1369 order/serializers.py:1475 msgid "Shipment is not associated with this order" msgstr "" -#: order/serializers.py:1412 +#: order/serializers.py:1416 msgid "No match found for the following serial numbers" msgstr "" -#: order/serializers.py:1419 +#: order/serializers.py:1423 msgid "The following serial numbers are already allocated" msgstr "" -#: order/serializers.py:1646 +#: order/serializers.py:1650 msgid "Return order line item" msgstr "" -#: order/serializers.py:1652 +#: order/serializers.py:1656 msgid "Line item does not match return order" msgstr "" -#: order/serializers.py:1655 +#: order/serializers.py:1659 msgid "Line item has already been received" msgstr "" -#: order/serializers.py:1684 +#: order/serializers.py:1688 msgid "Items can only be received against orders which are in progress" msgstr "" -#: order/serializers.py:1762 +#: order/serializers.py:1766 msgid "Line price currency" msgstr "" +#: order/status_codes.py:16 order/status_codes.py:46 stock/status_codes.py:16 +msgid "Lost" +msgstr "Mistet" + +#: order/status_codes.py:17 order/status_codes.py:47 stock/status_codes.py:22 +msgid "Returned" +msgstr "Returneret" + +#: order/status_codes.py:40 order/status_codes.py:67 +msgid "In Progress" +msgstr "Igangværende" + +#: order/status_codes.py:85 +msgid "Return" +msgstr "Retur" + +#: order/status_codes.py:88 +msgid "Repair" +msgstr "Reparér" + +#: order/status_codes.py:91 +msgid "Replace" +msgstr "Erstat" + +#: order/status_codes.py:94 +msgid "Refund" +msgstr "Refusion" + +#: order/status_codes.py:97 +msgid "Reject" +msgstr "Afvis" + #: order/tasks.py:25 msgid "Overdue Purchase Order" msgstr "" @@ -5553,7 +5413,7 @@ msgstr "" #: order/templates/order/order_base.html:84 #: order/templates/order/return_order_base.html:87 -#: order/templates/order/sales_order_base.html:93 +#: order/templates/order/sales_order_base.html:97 msgid "Complete Order" msgstr "" @@ -5563,13 +5423,13 @@ msgstr "" #: order/templates/order/order_base.html:106 #: order/templates/order/return_order_base.html:101 -#: order/templates/order/sales_order_base.html:106 +#: order/templates/order/sales_order_base.html:110 msgid "Order Reference" msgstr "" #: order/templates/order/order_base.html:111 #: order/templates/order/return_order_base.html:106 -#: order/templates/order/sales_order_base.html:111 +#: order/templates/order/sales_order_base.html:115 msgid "Order Description" msgstr "" @@ -5578,19 +5438,19 @@ msgid "No suppplier information available" msgstr "" #: order/templates/order/order_base.html:154 -#: order/templates/order/sales_order_base.html:157 +#: order/templates/order/sales_order_base.html:161 msgid "Completed Line Items" msgstr "" #: order/templates/order/order_base.html:160 -#: order/templates/order/sales_order_base.html:163 -#: order/templates/order/sales_order_base.html:173 +#: order/templates/order/sales_order_base.html:167 +#: order/templates/order/sales_order_base.html:177 msgid "Incomplete" msgstr "" #: order/templates/order/order_base.html:179 #: order/templates/order/return_order_base.html:157 -#: report/templates/report/inventree_build_order_base.html:121 +#: report/templates/report/inventree_build_order_report.html:121 msgid "Issued" msgstr "" @@ -5600,15 +5460,15 @@ msgstr "" #: order/templates/order/order_base.html:228 #: order/templates/order/return_order_base.html:199 -#: order/templates/order/sales_order_base.html:239 +#: order/templates/order/sales_order_base.html:243 msgid "Total cost could not be calculated" msgstr "" -#: order/templates/order/order_base.html:318 +#: order/templates/order/order_base.html:314 msgid "Purchase Order QR Code" msgstr "" -#: order/templates/order/order_base.html:330 +#: order/templates/order/order_base.html:326 msgid "Link Barcode to Purchase Order" msgstr "" @@ -5662,11 +5522,11 @@ msgstr "" #: 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/build.js:1629 #: 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/return_order.js:505 +#: templates/js/translated/sales_order.js:1145 #: templates/js/translated/stock.js:714 templates/js/translated/stock.js:883 #: templates/patterns/wizard/match_fields.html:70 msgid "Remove row" @@ -5708,15 +5568,6 @@ msgstr "" 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 "" @@ -5729,7 +5580,7 @@ msgstr "" #: 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/return_order.js:458 #: templates/js/translated/sales_order.js:237 msgid "Add Line Item" msgstr "" @@ -5778,30 +5629,30 @@ 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 +#: order/templates/order/sales_order_base.html:155 +#: templates/js/translated/return_order.js:308 +#: templates/js/translated/sales_order.js:833 msgid "Customer Reference" msgstr "" #: order/templates/order/return_order_base.html:195 -#: order/templates/order/sales_order_base.html:235 +#: order/templates/order/sales_order_base.html:239 #: part/templates/part/part_pricing.html:32 #: part/templates/part/part_pricing.html:58 #: part/templates/part/part_pricing.html:99 #: part/templates/part/part_pricing.html:114 #: templates/js/translated/part.js:1072 -#: templates/js/translated/purchase_order.js:1753 -#: templates/js/translated/return_order.js:381 -#: templates/js/translated/sales_order.js:855 +#: templates/js/translated/purchase_order.js:1752 +#: templates/js/translated/return_order.js:380 +#: templates/js/translated/sales_order.js:891 msgid "Total Cost" msgstr "" -#: order/templates/order/return_order_base.html:263 +#: order/templates/order/return_order_base.html:259 msgid "Return Order QR Code" msgstr "" -#: order/templates/order/return_order_base.html:275 +#: order/templates/order/return_order_base.html:271 msgid "Link Barcode to Return Order" msgstr "" @@ -5819,25 +5670,30 @@ msgid "Ship Items" msgstr "" #: order/templates/order/sales_order_base.html:92 -#: templates/js/translated/sales_order.js:484 +#: order/templates/order/sales_order_base.html:93 +msgid "Mark As Shipped" +msgstr "" + +#: order/templates/order/sales_order_base.html:96 +#: templates/js/translated/sales_order.js:536 msgid "Complete Sales Order" msgstr "" -#: order/templates/order/sales_order_base.html:131 +#: order/templates/order/sales_order_base.html:135 msgid "This Sales Order has not been fully allocated" msgstr "" -#: order/templates/order/sales_order_base.html:169 +#: order/templates/order/sales_order_base.html:173 #: order/templates/order/sales_order_detail.html:99 #: order/templates/order/so_sidebar.html:11 msgid "Completed Shipments" msgstr "" -#: order/templates/order/sales_order_base.html:312 +#: order/templates/order/sales_order_base.html:321 msgid "Sales Order QR Code" msgstr "" -#: order/templates/order/sales_order_base.html:324 +#: order/templates/order/sales_order_base.html:333 msgid "Link Barcode to Sales Order" msgstr "" @@ -5881,12 +5737,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:3921 part/stocktake.py:218 +#: part/admin.py:39 part/admin.py:406 part/models.py:3964 part/stocktake.py:218 #: stock/admin.py:153 msgid "Part ID" msgstr "" -#: part/admin.py:41 part/admin.py:411 part/models.py:3922 part/stocktake.py:219 +#: part/admin.py:41 part/admin.py:413 part/models.py:3965 part/stocktake.py:219 #: stock/admin.py:157 msgid "Part Name" msgstr "" @@ -5895,20 +5751,20 @@ msgstr "" msgid "Part Description" msgstr "" -#: part/admin.py:48 part/models.py:904 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 +#: part/admin.py:48 part/models.py:947 part/templates/part/part_base.html:269 +#: report/templates/report/inventree_stock_location_report.html:103 +#: templates/js/translated/part.js:1226 templates/js/translated/part.js:2340 +#: templates/js/translated/stock.js:2036 msgid "IPN" msgstr "" -#: part/admin.py:50 part/models.py:913 part/templates/part/part_base.html:277 -#: report/models.py:195 templates/js/translated/part.js:1231 -#: templates/js/translated/part.js:2347 +#: part/admin.py:50 part/models.py:956 part/templates/part/part_base.html:277 +#: report/models.py:161 templates/js/translated/part.js:1231 +#: templates/js/translated/part.js:2346 msgid "Revision" msgstr "" -#: part/admin.py:53 part/admin.py:317 part/models.py:886 +#: part/admin.py:53 part/admin.py:319 part/models.py:929 #: part/templates/part/category.html:94 part/templates/part/part_base.html:298 msgid "Keywords" msgstr "" @@ -5917,15 +5773,15 @@ msgstr "" msgid "Part Image" msgstr "" -#: part/admin.py:63 part/admin.py:300 part/stocktake.py:221 +#: part/admin.py:63 part/admin.py:302 part/stocktake.py:221 msgid "Category ID" msgstr "" -#: part/admin.py:67 part/admin.py:302 part/stocktake.py:222 +#: part/admin.py:67 part/admin.py:304 part/stocktake.py:222 msgid "Category Name" msgstr "" -#: part/admin.py:71 part/admin.py:314 +#: part/admin.py:71 part/admin.py:316 msgid "Default Location ID" msgstr "" @@ -5933,11 +5789,11 @@ msgstr "" msgid "Default Supplier ID" msgstr "" -#: part/admin.py:81 part/models.py:872 part/templates/part/part_base.html:177 +#: part/admin.py:81 part/models.py:915 part/templates/part/part_base.html:177 msgid "Variant Of" msgstr "" -#: part/admin.py:84 part/models.py:1000 part/templates/part/part_base.html:203 +#: part/admin.py:84 part/models.py:1043 part/templates/part/part_base.html:203 msgid "Minimum Stock" msgstr "" @@ -5950,160 +5806,164 @@ msgstr "" msgid "Building" msgstr "" -#: part/admin.py:155 part/models.py:3080 part/models.py:3094 +#: part/admin.py:155 part/models.py:3123 part/models.py:3137 #: templates/js/translated/part.js:969 msgid "Minimum Cost" msgstr "" -#: part/admin.py:158 part/models.py:3087 part/models.py:3101 +#: part/admin.py:158 part/models.py:3130 part/models.py:3144 #: 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 +#: part/admin.py:308 part/admin.py:395 stock/admin.py:58 stock/admin.py:211 msgid "Parent ID" msgstr "" -#: part/admin.py:310 part/admin.py:400 stock/admin.py:62 +#: part/admin.py:312 part/admin.py:402 stock/admin.py:62 msgid "Parent Name" msgstr "" -#: part/admin.py:318 part/templates/part/category.html:88 +#: part/admin.py:320 part/templates/part/category.html:88 #: part/templates/part/category.html:101 msgid "Category Path" msgstr "" -#: part/admin.py:323 part/models.py:391 part/serializers.py:117 +#: part/admin.py:325 part/models.py:393 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/js/translated/part.js:2803 templates/js/translated/search.js:130 #: templates/navbar.html:24 users/models.py:203 msgid "Parts" msgstr "" -#: part/admin.py:384 +#: part/admin.py:386 msgid "BOM Level" msgstr "" -#: part/admin.py:387 +#: part/admin.py:389 msgid "BOM Item ID" msgstr "" -#: part/admin.py:397 +#: part/admin.py:399 msgid "Parent IPN" msgstr "" -#: part/admin.py:408 part/models.py:3923 +#: part/admin.py:410 part/models.py:3966 msgid "Part IPN" msgstr "" -#: part/admin.py:421 part/serializers.py:1261 +#: part/admin.py:423 part/serializers.py:1278 #: templates/js/translated/pricing.js:358 #: templates/js/translated/pricing.js:1024 msgid "Minimum Price" msgstr "" -#: part/admin.py:426 part/serializers.py:1276 +#: part/admin.py:428 part/serializers.py:1293 #: templates/js/translated/pricing.js:353 #: templates/js/translated/pricing.js:1032 msgid "Maximum Price" msgstr "" -#: part/api.py:119 +#: part/api.py:110 msgid "Starred" msgstr "" -#: part/api.py:121 +#: part/api.py:112 msgid "Filter by starred categories" msgstr "" -#: part/api.py:138 stock/api.py:284 +#: part/api.py:129 stock/api.py:318 msgid "Depth" msgstr "" -#: part/api.py:138 +#: part/api.py:129 msgid "Filter by category depth" msgstr "" -#: part/api.py:156 stock/api.py:302 +#: part/api.py:147 stock/api.py:336 msgid "Cascade" msgstr "" -#: part/api.py:158 +#: part/api.py:149 msgid "Include sub-categories in filtered results" msgstr "" -#: part/api.py:178 +#: part/api.py:169 msgid "Parent" msgstr "" -#: part/api.py:180 +#: part/api.py:171 msgid "Filter by parent category" msgstr "" -#: part/api.py:213 +#: part/api.py:204 msgid "Exclude Tree" msgstr "" -#: part/api.py:215 +#: part/api.py:206 msgid "Exclude sub-categories under the specified category" msgstr "" -#: part/api.py:461 +#: part/api.py:455 msgid "Has Results" msgstr "" -#: part/api.py:628 +#: part/api.py:622 msgid "Incoming Purchase Order" msgstr "" -#: part/api.py:646 +#: part/api.py:640 msgid "Outgoing Sales Order" msgstr "" -#: part/api.py:662 +#: part/api.py:656 msgid "Stock produced by Build Order" msgstr "" -#: part/api.py:746 +#: part/api.py:740 msgid "Stock required for Build Order" msgstr "" -#: part/api.py:893 +#: part/api.py:887 msgid "Valid" msgstr "" -#: part/api.py:894 +#: part/api.py:888 msgid "Validate entire Bill of Materials" msgstr "" -#: part/api.py:900 +#: part/api.py:894 msgid "This option must be selected" msgstr "" -#: part/api.py:1561 part/models.py:896 part/models.py:3386 part/models.py:3866 -#: part/serializers.py:406 part/serializers.py:1117 -#: part/templates/part/part_base.html:260 stock/api.py:745 +#: part/api.py:1111 +msgid "BOM Valid" +msgstr "" + +#: part/api.py:1515 part/models.py:939 part/models.py:3429 part/models.py:3909 +#: part/serializers.py:406 part/serializers.py:1134 +#: part/templates/part/part_base.html:260 stock/api.py:781 #: templates/InvenTree/settings/settings_staff_js.html:300 #: templates/js/translated/notification.js:60 -#: templates/js/translated/part.js:2377 +#: templates/js/translated/part.js:2376 msgid "Category" msgstr "" -#: part/api.py:1849 +#: part/api.py:1803 msgid "Uses" msgstr "" -#: part/bom.py:170 part/models.py:101 part/models.py:939 +#: part/bom.py:170 part/models.py:102 part/models.py:982 #: part/templates/part/category.html:116 part/templates/part/part_base.html:367 msgid "Default Location" msgstr "" -#: part/bom.py:171 part/serializers.py:822 +#: part/bom.py:171 part/serializers.py:837 #: templates/email/low_stock_notification.html:16 msgid "Total Stock" msgstr "" @@ -6112,698 +5972,712 @@ msgstr "" msgid "Input quantity for price calculation" msgstr "" -#: part/models.py:82 part/models.py:3867 part/templates/part/category.html:16 +#: part/models.py:83 part/models.py:3910 part/templates/part/category.html:16 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "" -#: part/models.py:83 part/templates/part/category.html:136 +#: part/models.py:84 part/templates/part/category.html:136 #: templates/InvenTree/search.html:97 templates/js/translated/search.js:158 #: users/models.py:202 msgid "Part Categories" msgstr "" -#: part/models.py:102 +#: part/models.py:103 msgid "Default location for parts in this category" msgstr "" -#: part/models.py:107 stock/models.py:165 templates/js/translated/part.js:2810 +#: part/models.py:108 stock/models.py:173 templates/js/translated/part.js:2809 #: 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:109 +#: part/models.py:110 msgid "Parts may not be directly assigned to a structural category, but may be assigned to child categories." msgstr "" -#: part/models.py:118 +#: part/models.py:119 msgid "Default keywords" msgstr "" -#: part/models.py:119 +#: part/models.py:120 msgid "Default keywords for parts in this category" msgstr "" -#: part/models.py:125 stock/models.py:89 stock/models.py:148 +#: part/models.py:126 stock/models.py:85 stock/models.py:156 #: templates/InvenTree/settings/settings_staff_js.html:456 msgid "Icon" msgstr "" -#: part/models.py:126 stock/models.py:149 +#: part/models.py:127 stock/models.py:157 msgid "Icon (optional)" msgstr "" -#: part/models.py:148 +#: part/models.py:149 msgid "You cannot make this part category structural because some parts are already assigned to it!" msgstr "" -#: part/models.py:484 +#: part/models.py:482 +msgid "Cannot delete this part as it is still active" +msgstr "" + +#: part/models.py:489 +msgid "Cannot delete this part as it is used in an assembly" +msgstr "" + +#: part/models.py:527 msgid "Invalid choice for parent part" msgstr "" -#: part/models.py:532 part/models.py:539 +#: part/models.py:575 part/models.py:582 #, python-brace-format msgid "Part '{self}' cannot be used in BOM for '{parent}' (recursive)" msgstr "" -#: part/models.py:551 +#: part/models.py:594 #, python-brace-format msgid "Part '{parent}' is used in BOM for '{self}' (recursive)" msgstr "" -#: part/models.py:616 +#: part/models.py:659 #, python-brace-format msgid "IPN must match regex pattern {pattern}" msgstr "" -#: part/models.py:696 +#: part/models.py:739 msgid "Stock item with this serial number already exists" msgstr "" -#: part/models.py:801 +#: part/models.py:844 msgid "Duplicate IPN not allowed in part settings" msgstr "" -#: part/models.py:811 +#: part/models.py:854 msgid "Part with this Name, IPN and Revision already exists." msgstr "" -#: part/models.py:826 +#: part/models.py:869 msgid "Parts cannot be assigned to structural part categories!" msgstr "" -#: part/models.py:855 part/models.py:3922 +#: part/models.py:898 part/models.py:3965 msgid "Part name" msgstr "" -#: part/models.py:860 +#: part/models.py:903 msgid "Is Template" msgstr "" -#: part/models.py:861 +#: part/models.py:904 msgid "Is this part a template part?" msgstr "" -#: part/models.py:871 +#: part/models.py:914 msgid "Is this part a variant of another part?" msgstr "" -#: part/models.py:879 +#: part/models.py:922 msgid "Part description (optional)" msgstr "" -#: part/models.py:887 +#: part/models.py:930 msgid "Part keywords to improve visibility in search results" msgstr "" -#: part/models.py:897 +#: part/models.py:940 msgid "Part category" msgstr "" -#: part/models.py:905 +#: part/models.py:948 msgid "Internal Part Number" msgstr "" -#: part/models.py:912 +#: part/models.py:955 msgid "Part revision or version number" msgstr "" -#: part/models.py:937 +#: part/models.py:980 msgid "Where is this item normally stored?" msgstr "" -#: part/models.py:983 part/templates/part/part_base.html:376 +#: part/models.py:1026 part/templates/part/part_base.html:376 msgid "Default Supplier" msgstr "" -#: part/models.py:984 +#: part/models.py:1027 msgid "Default supplier part" msgstr "" -#: part/models.py:991 +#: part/models.py:1034 msgid "Default Expiry" msgstr "" -#: part/models.py:992 +#: part/models.py:1035 msgid "Expiry time (in days) for stock items of this part" msgstr "" -#: part/models.py:1001 +#: part/models.py:1044 msgid "Minimum allowed stock level" msgstr "" -#: part/models.py:1010 +#: part/models.py:1053 msgid "Units of measure for this part" msgstr "" -#: part/models.py:1017 +#: part/models.py:1060 msgid "Can this part be built from other parts?" msgstr "" -#: part/models.py:1023 +#: part/models.py:1066 msgid "Can this part be used to build other parts?" msgstr "" -#: part/models.py:1029 +#: part/models.py:1072 msgid "Does this part have tracking for unique items?" msgstr "" -#: part/models.py:1035 +#: part/models.py:1078 msgid "Can this part be purchased from external suppliers?" msgstr "" -#: part/models.py:1041 +#: part/models.py:1084 msgid "Can this part be sold to customers?" msgstr "" -#: part/models.py:1045 +#: part/models.py:1088 msgid "Is this part active?" msgstr "" -#: part/models.py:1051 +#: part/models.py:1094 msgid "Is this a virtual part, such as a software product or license?" msgstr "" -#: part/models.py:1057 +#: part/models.py:1100 msgid "BOM checksum" msgstr "" -#: part/models.py:1058 +#: part/models.py:1101 msgid "Stored BOM checksum" msgstr "" -#: part/models.py:1066 +#: part/models.py:1109 msgid "BOM checked by" msgstr "" -#: part/models.py:1071 +#: part/models.py:1114 msgid "BOM checked date" msgstr "" -#: part/models.py:1087 +#: part/models.py:1130 msgid "Creation User" msgstr "" -#: part/models.py:1097 +#: part/models.py:1140 msgid "Owner responsible for this part" msgstr "" -#: part/models.py:1102 part/templates/part/part_base.html:339 +#: part/models.py:1145 part/templates/part/part_base.html:339 #: stock/templates/stock/item_base.html:451 -#: templates/js/translated/part.js:2471 +#: templates/js/translated/part.js:2470 msgid "Last Stocktake" msgstr "" -#: part/models.py:1975 +#: part/models.py:2018 msgid "Sell multiple" msgstr "" -#: part/models.py:2994 +#: part/models.py:3037 msgid "Currency used to cache pricing calculations" msgstr "" -#: part/models.py:3010 +#: part/models.py:3053 msgid "Minimum BOM Cost" msgstr "" -#: part/models.py:3011 +#: part/models.py:3054 msgid "Minimum cost of component parts" msgstr "" -#: part/models.py:3017 +#: part/models.py:3060 msgid "Maximum BOM Cost" msgstr "" -#: part/models.py:3018 +#: part/models.py:3061 msgid "Maximum cost of component parts" msgstr "" -#: part/models.py:3024 +#: part/models.py:3067 msgid "Minimum Purchase Cost" msgstr "" -#: part/models.py:3025 +#: part/models.py:3068 msgid "Minimum historical purchase cost" msgstr "" -#: part/models.py:3031 +#: part/models.py:3074 msgid "Maximum Purchase Cost" msgstr "" -#: part/models.py:3032 +#: part/models.py:3075 msgid "Maximum historical purchase cost" msgstr "" -#: part/models.py:3038 +#: part/models.py:3081 msgid "Minimum Internal Price" msgstr "" -#: part/models.py:3039 +#: part/models.py:3082 msgid "Minimum cost based on internal price breaks" msgstr "" -#: part/models.py:3045 +#: part/models.py:3088 msgid "Maximum Internal Price" msgstr "" -#: part/models.py:3046 +#: part/models.py:3089 msgid "Maximum cost based on internal price breaks" msgstr "" -#: part/models.py:3052 +#: part/models.py:3095 msgid "Minimum Supplier Price" msgstr "" -#: part/models.py:3053 +#: part/models.py:3096 msgid "Minimum price of part from external suppliers" msgstr "" -#: part/models.py:3059 +#: part/models.py:3102 msgid "Maximum Supplier Price" msgstr "" -#: part/models.py:3060 +#: part/models.py:3103 msgid "Maximum price of part from external suppliers" msgstr "" -#: part/models.py:3066 +#: part/models.py:3109 msgid "Minimum Variant Cost" msgstr "" -#: part/models.py:3067 +#: part/models.py:3110 msgid "Calculated minimum cost of variant parts" msgstr "" -#: part/models.py:3073 +#: part/models.py:3116 msgid "Maximum Variant Cost" msgstr "" -#: part/models.py:3074 +#: part/models.py:3117 msgid "Calculated maximum cost of variant parts" msgstr "" -#: part/models.py:3081 +#: part/models.py:3124 msgid "Override minimum cost" msgstr "" -#: part/models.py:3088 +#: part/models.py:3131 msgid "Override maximum cost" msgstr "" -#: part/models.py:3095 +#: part/models.py:3138 msgid "Calculated overall minimum cost" msgstr "" -#: part/models.py:3102 +#: part/models.py:3145 msgid "Calculated overall maximum cost" msgstr "" -#: part/models.py:3108 +#: part/models.py:3151 msgid "Minimum Sale Price" msgstr "" -#: part/models.py:3109 +#: part/models.py:3152 msgid "Minimum sale price based on price breaks" msgstr "" -#: part/models.py:3115 +#: part/models.py:3158 msgid "Maximum Sale Price" msgstr "" -#: part/models.py:3116 +#: part/models.py:3159 msgid "Maximum sale price based on price breaks" msgstr "" -#: part/models.py:3122 +#: part/models.py:3165 msgid "Minimum Sale Cost" msgstr "" -#: part/models.py:3123 +#: part/models.py:3166 msgid "Minimum historical sale price" msgstr "" -#: part/models.py:3129 +#: part/models.py:3172 msgid "Maximum Sale Cost" msgstr "" -#: part/models.py:3130 +#: part/models.py:3173 msgid "Maximum historical sale price" msgstr "" -#: part/models.py:3149 +#: part/models.py:3192 msgid "Part for stocktake" msgstr "" -#: part/models.py:3154 +#: part/models.py:3197 msgid "Item Count" msgstr "" -#: part/models.py:3155 +#: part/models.py:3198 msgid "Number of individual stock entries at time of stocktake" msgstr "" -#: part/models.py:3163 +#: part/models.py:3206 msgid "Total available stock at time of stocktake" msgstr "" -#: part/models.py:3167 part/models.py:3250 +#: part/models.py:3210 part/models.py:3293 #: part/templates/part/part_scheduling.html:13 -#: report/templates/report/inventree_test_report_base.html:106 +#: report/templates/report/inventree_test_report.html:106 #: templates/InvenTree/settings/plugin_settings.html:37 #: templates/InvenTree/settings/settings_staff_js.html:540 #: templates/js/translated/part.js:1085 templates/js/translated/pricing.js:826 #: templates/js/translated/pricing.js:950 -#: templates/js/translated/purchase_order.js:1732 +#: templates/js/translated/purchase_order.js:1731 #: templates/js/translated/stock.js:2821 msgid "Date" msgstr "" -#: part/models.py:3168 +#: part/models.py:3211 msgid "Date stocktake was performed" msgstr "" -#: part/models.py:3176 +#: part/models.py:3219 msgid "Additional notes" msgstr "" -#: part/models.py:3186 +#: part/models.py:3229 msgid "User who performed this stocktake" msgstr "" -#: part/models.py:3192 +#: part/models.py:3235 msgid "Minimum Stock Cost" msgstr "" -#: part/models.py:3193 +#: part/models.py:3236 msgid "Estimated minimum cost of stock on hand" msgstr "" -#: part/models.py:3199 +#: part/models.py:3242 msgid "Maximum Stock Cost" msgstr "" -#: part/models.py:3200 +#: part/models.py:3243 msgid "Estimated maximum cost of stock on hand" msgstr "" -#: part/models.py:3256 templates/InvenTree/settings/settings_staff_js.html:529 +#: part/models.py:3299 templates/InvenTree/settings/settings_staff_js.html:529 msgid "Report" msgstr "" -#: part/models.py:3257 +#: part/models.py:3300 msgid "Stocktake report file (generated internally)" msgstr "" -#: part/models.py:3262 templates/InvenTree/settings/settings_staff_js.html:536 +#: part/models.py:3305 templates/InvenTree/settings/settings_staff_js.html:536 msgid "Part Count" msgstr "" -#: part/models.py:3263 +#: part/models.py:3306 msgid "Number of parts covered by stocktake" msgstr "" -#: part/models.py:3273 +#: part/models.py:3316 msgid "User who requested this stocktake report" msgstr "" -#: part/models.py:3435 +#: part/models.py:3478 msgid "Invalid template name - must include at least one alphanumeric character" msgstr "" -#: part/models.py:3446 +#: part/models.py:3489 msgid "Test templates can only be created for trackable parts" msgstr "" -#: part/models.py:3457 +#: part/models.py:3500 msgid "Test template with the same key already exists for part" msgstr "" -#: part/models.py:3474 templates/js/translated/part.js:2879 +#: part/models.py:3517 templates/js/translated/part.js:2878 msgid "Test Name" msgstr "" -#: part/models.py:3475 +#: part/models.py:3518 msgid "Enter a name for the test" msgstr "" -#: part/models.py:3481 +#: part/models.py:3524 msgid "Test Key" msgstr "" -#: part/models.py:3482 +#: part/models.py:3525 msgid "Simplified key for the test" msgstr "" -#: part/models.py:3489 +#: part/models.py:3532 msgid "Test Description" msgstr "" -#: part/models.py:3490 +#: part/models.py:3533 msgid "Enter description for this test" msgstr "" -#: part/models.py:3494 +#: part/models.py:3537 report/models.py:208 +#: templates/js/translated/part.js:2899 +#: templates/js/translated/table_filters.js:481 +msgid "Enabled" +msgstr "" + +#: part/models.py:3537 msgid "Is this test enabled?" msgstr "" -#: part/models.py:3499 templates/js/translated/part.js:2908 +#: part/models.py:3542 templates/js/translated/part.js:2907 #: templates/js/translated/table_filters.js:477 msgid "Required" msgstr "" -#: part/models.py:3500 +#: part/models.py:3543 msgid "Is this test required to pass?" msgstr "" -#: part/models.py:3505 templates/js/translated/part.js:2916 +#: part/models.py:3548 templates/js/translated/part.js:2915 msgid "Requires Value" msgstr "" -#: part/models.py:3506 +#: part/models.py:3549 msgid "Does this test require a value when adding a test result?" msgstr "" -#: part/models.py:3511 templates/js/translated/part.js:2923 +#: part/models.py:3554 templates/js/translated/part.js:2922 msgid "Requires Attachment" msgstr "" -#: part/models.py:3513 +#: part/models.py:3556 msgid "Does this test require a file attachment when adding a test result?" msgstr "" -#: part/models.py:3560 +#: part/models.py:3603 msgid "Checkbox parameters cannot have units" msgstr "" -#: part/models.py:3565 +#: part/models.py:3608 msgid "Checkbox parameters cannot have choices" msgstr "" -#: part/models.py:3585 +#: part/models.py:3628 msgid "Choices must be unique" msgstr "" -#: part/models.py:3602 +#: part/models.py:3645 msgid "Parameter template name must be unique" msgstr "" -#: part/models.py:3617 +#: part/models.py:3660 msgid "Parameter Name" msgstr "" -#: part/models.py:3624 +#: part/models.py:3667 msgid "Physical units for this parameter" msgstr "" -#: part/models.py:3632 +#: part/models.py:3675 msgid "Parameter description" msgstr "" -#: part/models.py:3638 templates/js/translated/part.js:1627 +#: part/models.py:3681 templates/js/translated/part.js:1627 #: templates/js/translated/table_filters.js:825 msgid "Checkbox" msgstr "" -#: part/models.py:3639 +#: part/models.py:3682 msgid "Is this parameter a checkbox?" msgstr "" -#: part/models.py:3644 templates/js/translated/part.js:1636 +#: part/models.py:3687 templates/js/translated/part.js:1636 msgid "Choices" msgstr "" -#: part/models.py:3645 +#: part/models.py:3688 msgid "Valid choices for this parameter (comma-separated)" msgstr "" -#: part/models.py:3722 +#: part/models.py:3765 msgid "Invalid choice for parameter value" msgstr "" -#: part/models.py:3765 +#: part/models.py:3808 msgid "Parent Part" msgstr "" -#: part/models.py:3773 part/models.py:3874 part/models.py:3875 +#: part/models.py:3816 part/models.py:3917 part/models.py:3918 #: templates/InvenTree/settings/settings_staff_js.html:295 msgid "Parameter Template" msgstr "" -#: part/models.py:3778 +#: part/models.py:3821 msgid "Data" msgstr "" -#: part/models.py:3779 +#: part/models.py:3822 msgid "Parameter Value" msgstr "" -#: part/models.py:3881 templates/InvenTree/settings/settings_staff_js.html:304 +#: part/models.py:3924 templates/InvenTree/settings/settings_staff_js.html:304 msgid "Default Value" msgstr "" -#: part/models.py:3882 +#: part/models.py:3925 msgid "Default Parameter Value" msgstr "" -#: part/models.py:3920 +#: part/models.py:3963 msgid "Part ID or part name" msgstr "" -#: part/models.py:3921 +#: part/models.py:3964 msgid "Unique part ID value" msgstr "" -#: part/models.py:3923 +#: part/models.py:3966 msgid "Part IPN value" msgstr "" -#: part/models.py:3924 +#: part/models.py:3967 msgid "Level" msgstr "" -#: part/models.py:3924 +#: part/models.py:3967 msgid "BOM level" msgstr "" -#: part/models.py:4014 +#: part/models.py:4057 msgid "Select parent part" msgstr "" -#: part/models.py:4024 +#: part/models.py:4067 msgid "Sub part" msgstr "" -#: part/models.py:4025 +#: part/models.py:4068 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:4036 +#: part/models.py:4079 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:4042 +#: part/models.py:4085 msgid "This BOM item is optional" msgstr "" -#: part/models.py:4048 +#: part/models.py:4091 msgid "This BOM item is consumable (it is not tracked in build orders)" msgstr "" -#: part/models.py:4055 part/templates/part/upload_bom.html:55 +#: part/models.py:4098 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "" -#: part/models.py:4056 +#: part/models.py:4099 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:4063 +#: part/models.py:4106 msgid "BOM item reference" msgstr "" -#: part/models.py:4071 +#: part/models.py:4114 msgid "BOM item notes" msgstr "" -#: part/models.py:4077 +#: part/models.py:4120 msgid "Checksum" msgstr "" -#: part/models.py:4078 +#: part/models.py:4121 msgid "BOM line checksum" msgstr "" -#: part/models.py:4083 templates/js/translated/table_filters.js:174 +#: part/models.py:4126 templates/js/translated/table_filters.js:174 msgid "Validated" msgstr "" -#: part/models.py:4084 +#: part/models.py:4127 msgid "This BOM item has been validated" msgstr "" -#: part/models.py:4089 part/templates/part/upload_bom.html:57 +#: part/models.py:4132 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:4090 +#: part/models.py:4133 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "" -#: part/models.py:4095 part/templates/part/upload_bom.html:56 +#: part/models.py:4138 part/templates/part/upload_bom.html:56 #: templates/js/translated/bom.js:1046 msgid "Allow Variants" msgstr "" -#: part/models.py:4096 +#: part/models.py:4139 msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:4181 stock/models.py:647 +#: part/models.py:4224 stock/models.py:664 msgid "Quantity must be integer value for trackable parts" msgstr "" -#: part/models.py:4191 part/models.py:4193 +#: part/models.py:4234 part/models.py:4236 msgid "Sub part must be specified" msgstr "" -#: part/models.py:4333 +#: part/models.py:4376 msgid "BOM Item Substitute" msgstr "" -#: part/models.py:4354 +#: part/models.py:4397 msgid "Substitute part cannot be the same as the master part" msgstr "" -#: part/models.py:4367 +#: part/models.py:4410 msgid "Parent BOM item" msgstr "" -#: part/models.py:4375 +#: part/models.py:4418 msgid "Substitute part" msgstr "" -#: part/models.py:4391 +#: part/models.py:4434 msgid "Part 1" msgstr "" -#: part/models.py:4399 +#: part/models.py:4442 msgid "Part 2" msgstr "" -#: part/models.py:4400 +#: part/models.py:4443 msgid "Select Related Part" msgstr "" -#: part/models.py:4419 +#: part/models.py:4462 msgid "Part relationship cannot be created between a part and itself" msgstr "" -#: part/models.py:4424 +#: part/models.py:4467 msgid "Duplicate relationship already exists" msgstr "" @@ -6821,7 +6695,7 @@ msgstr "" msgid "Number of results recorded against this template" msgstr "" -#: part/serializers.py:210 part/serializers.py:228 stock/serializers.py:406 +#: part/serializers.py:210 part/serializers.py:228 stock/serializers.py:535 msgid "Purchase currency of this stock item" msgstr "" @@ -6837,299 +6711,299 @@ msgstr "" msgid "Select category" msgstr "" -#: part/serializers.py:437 +#: part/serializers.py:442 msgid "Original Part" msgstr "" -#: part/serializers.py:438 +#: part/serializers.py:443 msgid "Select original part to duplicate" msgstr "" -#: part/serializers.py:443 +#: part/serializers.py:448 msgid "Copy Image" msgstr "" -#: part/serializers.py:444 +#: part/serializers.py:449 msgid "Copy image from original part" msgstr "" -#: part/serializers.py:450 part/templates/part/detail.html:277 +#: part/serializers.py:455 part/templates/part/detail.html:277 msgid "Copy BOM" msgstr "" -#: part/serializers.py:451 +#: part/serializers.py:456 msgid "Copy bill of materials from original part" msgstr "" -#: part/serializers.py:457 +#: part/serializers.py:462 msgid "Copy Parameters" msgstr "" -#: part/serializers.py:458 +#: part/serializers.py:463 msgid "Copy parameter data from original part" msgstr "" -#: part/serializers.py:464 +#: part/serializers.py:469 msgid "Copy Notes" msgstr "" -#: part/serializers.py:465 +#: part/serializers.py:470 msgid "Copy notes from original part" msgstr "" -#: part/serializers.py:478 +#: part/serializers.py:488 msgid "Initial Stock Quantity" msgstr "" -#: part/serializers.py:480 +#: part/serializers.py:490 msgid "Specify initial stock quantity for this Part. If quantity is zero, no stock is added." msgstr "" -#: part/serializers.py:487 +#: part/serializers.py:497 msgid "Initial Stock Location" msgstr "" -#: part/serializers.py:488 +#: part/serializers.py:498 msgid "Specify initial stock location for this Part" msgstr "" -#: part/serializers.py:500 +#: part/serializers.py:515 msgid "Select supplier (or leave blank to skip)" msgstr "" -#: part/serializers.py:516 +#: part/serializers.py:531 msgid "Select manufacturer (or leave blank to skip)" msgstr "" -#: part/serializers.py:526 +#: part/serializers.py:541 msgid "Manufacturer part number" msgstr "" -#: part/serializers.py:533 +#: part/serializers.py:548 msgid "Selected company is not a valid supplier" msgstr "" -#: part/serializers.py:542 +#: part/serializers.py:557 msgid "Selected company is not a valid manufacturer" msgstr "" -#: part/serializers.py:553 +#: part/serializers.py:568 msgid "Manufacturer part matching this MPN already exists" msgstr "" -#: part/serializers.py:560 +#: part/serializers.py:575 msgid "Supplier part matching this SKU already exists" msgstr "" -#: part/serializers.py:823 +#: part/serializers.py:838 msgid "External Stock" msgstr "" -#: part/serializers.py:825 +#: part/serializers.py:840 msgid "Unallocated Stock" msgstr "" -#: part/serializers.py:828 +#: part/serializers.py:843 msgid "Variant Stock" msgstr "" -#: part/serializers.py:856 part/templates/part/copy_part.html:9 +#: part/serializers.py:873 part/templates/part/copy_part.html:9 #: templates/js/translated/part.js:471 msgid "Duplicate Part" msgstr "" -#: part/serializers.py:857 +#: part/serializers.py:874 msgid "Copy initial data from another Part" msgstr "" -#: part/serializers.py:863 templates/js/translated/part.js:102 +#: part/serializers.py:880 templates/js/translated/part.js:102 msgid "Initial Stock" msgstr "" -#: part/serializers.py:864 +#: part/serializers.py:881 msgid "Create Part with initial stock quantity" msgstr "" -#: part/serializers.py:870 +#: part/serializers.py:887 msgid "Supplier Information" msgstr "" -#: part/serializers.py:871 +#: part/serializers.py:888 msgid "Add initial supplier information for this part" msgstr "" -#: part/serializers.py:879 +#: part/serializers.py:896 msgid "Copy Category Parameters" msgstr "" -#: part/serializers.py:880 +#: part/serializers.py:897 msgid "Copy parameter templates from selected part category" msgstr "" -#: part/serializers.py:885 +#: part/serializers.py:902 msgid "Existing Image" msgstr "" -#: part/serializers.py:886 +#: part/serializers.py:903 msgid "Filename of an existing part image" msgstr "" -#: part/serializers.py:903 +#: part/serializers.py:920 msgid "Image file does not exist" msgstr "" -#: part/serializers.py:1109 +#: part/serializers.py:1126 msgid "Limit stocktake report to a particular part, and any variant parts" msgstr "" -#: part/serializers.py:1119 +#: part/serializers.py:1136 msgid "Limit stocktake report to a particular part category, and any child categories" msgstr "" -#: part/serializers.py:1129 +#: part/serializers.py:1146 msgid "Limit stocktake report to a particular stock location, and any child locations" msgstr "" -#: part/serializers.py:1135 +#: part/serializers.py:1152 msgid "Exclude External Stock" msgstr "" -#: part/serializers.py:1136 +#: part/serializers.py:1153 msgid "Exclude stock items in external locations" msgstr "" -#: part/serializers.py:1141 +#: part/serializers.py:1158 msgid "Generate Report" msgstr "" -#: part/serializers.py:1142 +#: part/serializers.py:1159 msgid "Generate report file containing calculated stocktake data" msgstr "" -#: part/serializers.py:1147 +#: part/serializers.py:1164 msgid "Update Parts" msgstr "" -#: part/serializers.py:1148 +#: part/serializers.py:1165 msgid "Update specified parts with calculated stocktake data" msgstr "" -#: part/serializers.py:1156 +#: part/serializers.py:1173 msgid "Stocktake functionality is not enabled" msgstr "" -#: part/serializers.py:1262 +#: part/serializers.py:1279 msgid "Override calculated value for minimum price" msgstr "" -#: part/serializers.py:1269 +#: part/serializers.py:1286 msgid "Minimum price currency" msgstr "" -#: part/serializers.py:1277 +#: part/serializers.py:1294 msgid "Override calculated value for maximum price" msgstr "" -#: part/serializers.py:1284 +#: part/serializers.py:1301 msgid "Maximum price currency" msgstr "" -#: part/serializers.py:1313 +#: part/serializers.py:1330 msgid "Update" msgstr "" -#: part/serializers.py:1314 +#: part/serializers.py:1331 msgid "Update pricing for this part" msgstr "" -#: part/serializers.py:1337 +#: part/serializers.py:1354 #, python-brace-format msgid "Could not convert from provided currencies to {default_currency}" msgstr "" -#: part/serializers.py:1344 +#: part/serializers.py:1361 msgid "Minimum price must not be greater than maximum price" msgstr "" -#: part/serializers.py:1347 +#: part/serializers.py:1364 msgid "Maximum price must not be less than minimum price" msgstr "" -#: part/serializers.py:1714 +#: part/serializers.py:1731 msgid "Select part to copy BOM from" msgstr "" -#: part/serializers.py:1722 +#: part/serializers.py:1739 msgid "Remove Existing Data" msgstr "" -#: part/serializers.py:1723 +#: part/serializers.py:1740 msgid "Remove existing BOM items before copying" msgstr "" -#: part/serializers.py:1728 +#: part/serializers.py:1745 msgid "Include Inherited" msgstr "" -#: part/serializers.py:1729 +#: part/serializers.py:1746 msgid "Include BOM items which are inherited from templated parts" msgstr "" -#: part/serializers.py:1734 +#: part/serializers.py:1751 msgid "Skip Invalid Rows" msgstr "" -#: part/serializers.py:1735 +#: part/serializers.py:1752 msgid "Enable this option to skip invalid rows" msgstr "" -#: part/serializers.py:1740 +#: part/serializers.py:1757 msgid "Copy Substitute Parts" msgstr "" -#: part/serializers.py:1741 +#: part/serializers.py:1758 msgid "Copy substitute parts when duplicate BOM items" msgstr "" -#: part/serializers.py:1775 +#: part/serializers.py:1792 msgid "Clear Existing BOM" msgstr "" -#: part/serializers.py:1776 +#: part/serializers.py:1793 msgid "Delete existing BOM items before uploading" msgstr "" -#: part/serializers.py:1806 +#: part/serializers.py:1823 msgid "No part column specified" msgstr "" -#: part/serializers.py:1850 +#: part/serializers.py:1867 msgid "Multiple matching parts found" msgstr "" -#: part/serializers.py:1853 +#: part/serializers.py:1870 msgid "No matching part found" msgstr "" -#: part/serializers.py:1856 +#: part/serializers.py:1873 msgid "Part is not designated as a component" msgstr "" -#: part/serializers.py:1865 +#: part/serializers.py:1882 msgid "Quantity not provided" msgstr "" -#: part/serializers.py:1873 +#: part/serializers.py:1890 msgid "Invalid quantity" msgstr "" -#: part/serializers.py:1894 +#: part/serializers.py:1911 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 +#: templates/js/translated/purchase_order.js:2084 msgid "Total Quantity" msgstr "" @@ -7281,7 +7155,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:2215 users/models.py:204 +#: templates/js/translated/stock.js:2216 users/models.py:204 msgid "Stocktake" msgstr "" @@ -7379,15 +7253,15 @@ msgstr "" msgid "Part Manufacturers" msgstr "" -#: part/templates/part/detail.html:659 +#: part/templates/part/detail.html:655 msgid "Related Part" msgstr "" -#: part/templates/part/detail.html:667 +#: part/templates/part/detail.html:663 msgid "Add Related Part" msgstr "" -#: part/templates/part/detail.html:752 +#: part/templates/part/detail.html:748 msgid "Add Test Result Template" msgstr "" @@ -7446,7 +7320,7 @@ msgstr "" #: part/templates/part/part_base.html:52 #: stock/templates/stock/item_base.html:62 -#: stock/templates/stock/location.html:74 +#: stock/templates/stock/location.html:74 templates/js/translated/label.js:143 msgid "Print Label" msgstr "" @@ -7468,7 +7342,7 @@ msgstr "" msgid "Transfer part stock" msgstr "" -#: part/templates/part/part_base.html:91 templates/js/translated/part.js:2293 +#: part/templates/part/part_base.html:91 templates/js/translated/part.js:2292 msgid "Part actions" msgstr "" @@ -7517,7 +7391,7 @@ msgid "Part is virtual (not a physical part)" msgstr "" #: part/templates/part/part_base.html:163 -#: part/templates/part/part_base.html:682 +#: part/templates/part/part_base.html:681 msgid "Show Part Details" msgstr "" @@ -7540,7 +7414,7 @@ msgid "Minimum stock level" msgstr "" #: part/templates/part/part_base.html:322 templates/js/translated/bom.js:1071 -#: templates/js/translated/part.js:1264 templates/js/translated/part.js:2444 +#: templates/js/translated/part.js:1264 templates/js/translated/part.js:2443 #: templates/js/translated/pricing.js:391 #: templates/js/translated/pricing.js:1054 msgid "Price Range" @@ -7563,19 +7437,19 @@ msgstr "" msgid "Link Barcode to Part" msgstr "" -#: part/templates/part/part_base.html:512 +#: part/templates/part/part_base.html:511 msgid "Calculate" msgstr "" -#: part/templates/part/part_base.html:529 +#: part/templates/part/part_base.html:528 msgid "Remove associated image from this part" msgstr "" -#: part/templates/part/part_base.html:580 +#: part/templates/part/part_base.html:579 msgid "No matching images found" msgstr "" -#: part/templates/part/part_base.html:676 +#: part/templates/part/part_base.html:675 msgid "Hide Part Details" msgstr "" @@ -7634,8 +7508,8 @@ msgstr "" #: 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 +#: templates/js/translated/part.js:2391 templates/js/translated/stock.js:1059 +#: templates/js/translated/stock.js:2070 templates/navbar.html:31 msgid "Stock" msgstr "" @@ -7681,7 +7555,7 @@ msgstr "" #: stock/templates/stock/item_base.html:446 #: templates/js/translated/company.js:1703 #: templates/js/translated/company.js:1713 -#: templates/js/translated/stock.js:2245 +#: templates/js/translated/stock.js:2246 msgid "Last Updated" msgstr "" @@ -7753,7 +7627,7 @@ msgid "Update Pricing" msgstr "" #: part/templates/part/stock_count.html:7 -#: templates/js/translated/model_renderers.js:221 +#: templates/js/translated/model_renderers.js:227 #: templates/js/translated/part.js:704 templates/js/translated/part.js:2140 #: templates/js/translated/part.js:2142 msgid "No Stock" @@ -7833,7 +7707,7 @@ msgstr "" msgid "Part Pricing" msgstr "" -#: plugin/api.py:168 +#: plugin/api.py:170 msgid "Plugin cannot be deleted as it is currently active" msgstr "" @@ -7899,8 +7773,8 @@ msgstr "" 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 +#: plugin/base/barcodes/api.py:550 templates/js/translated/build.js:2589 +#: templates/js/translated/sales_order.js:1953 msgid "Insufficient stock available" msgstr "" @@ -7994,20 +7868,20 @@ msgstr "" msgid "Quantity to allocate" msgstr "" -#: plugin/base/label/label.py:39 +#: plugin/base/label/label.py:39 templates/js/translated/label.js:155 msgid "Label printing failed" msgstr "" -#: plugin/base/label/mixins.py:63 +#: plugin/base/label/mixins.py:56 msgid "Error rendering label to PDF" msgstr "" -#: plugin/base/label/mixins.py:76 +#: plugin/base/label/mixins.py:70 msgid "Error rendering label to HTML" msgstr "" -#: plugin/base/label/mixins.py:111 -msgid "Error rendering label to PNG" +#: plugin/base/label/mixins.py:151 +msgid "No items provided to print" msgstr "" #: plugin/builtin/barcodes/inventree_barcode.py:25 @@ -8021,7 +7895,7 @@ 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_label.py:22 #: plugin/builtin/labels/inventree_machine.py:64 #: plugin/builtin/labels/label_sheet.py:63 #: plugin/builtin/suppliers/digikey.py:19 plugin/builtin/suppliers/lcsc.py:21 @@ -8075,19 +7949,19 @@ msgstr "" msgid "Default currency exchange integration" msgstr "" -#: plugin/builtin/labels/inventree_label.py:20 +#: plugin/builtin/labels/inventree_label.py:19 msgid "InvenTree PDF label printer" msgstr "" -#: plugin/builtin/labels/inventree_label.py:21 +#: plugin/builtin/labels/inventree_label.py:20 msgid "Provides native support for printing PDF labels" msgstr "" -#: plugin/builtin/labels/inventree_label.py:29 +#: plugin/builtin/labels/inventree_label.py:28 msgid "Debug mode" msgstr "" -#: plugin/builtin/labels/inventree_label.py:30 +#: plugin/builtin/labels/inventree_label.py:29 msgid "Enable debug mode - returns raw HTML instead of PDF" msgstr "" @@ -8099,11 +7973,11 @@ msgstr "" msgid "Provides support for printing using a machine" msgstr "" -#: plugin/builtin/labels/inventree_machine.py:150 +#: plugin/builtin/labels/inventree_machine.py:151 msgid "last used" msgstr "" -#: plugin/builtin/labels/inventree_machine.py:167 +#: plugin/builtin/labels/inventree_machine.py:168 msgid "Options" msgstr "" @@ -8127,7 +8001,7 @@ msgstr "" msgid "Print a border around each label" msgstr "" -#: plugin/builtin/labels/label_sheet.py:47 report/models.py:209 +#: plugin/builtin/labels/label_sheet.py:47 report/models.py:307 msgid "Landscape" msgstr "" @@ -8143,11 +8017,11 @@ msgstr "" msgid "Arrays multiple labels onto a single sheet" msgstr "" -#: plugin/builtin/labels/label_sheet.py:94 +#: plugin/builtin/labels/label_sheet.py:99 msgid "Label is too large for page size" msgstr "" -#: plugin/builtin/labels/label_sheet.py:128 +#: plugin/builtin/labels/label_sheet.py:133 msgid "No labels were generated" msgstr "" @@ -8240,61 +8114,62 @@ msgstr "" msgid "Uninstalled plugin successfully" msgstr "" -#: plugin/models.py:30 +#: plugin/models.py:35 msgid "Plugin Configuration" msgstr "" -#: plugin/models.py:31 +#: plugin/models.py:36 msgid "Plugin Configurations" msgstr "" -#: plugin/models.py:34 users/models.py:100 +#: plugin/models.py:42 users/models.py:100 msgid "Key" msgstr "" -#: plugin/models.py:34 +#: plugin/models.py:43 msgid "Key of plugin" msgstr "" -#: plugin/models.py:42 +#: plugin/models.py:51 msgid "PluginName of the plugin" msgstr "" -#: plugin/models.py:49 plugin/serializers.py:90 +#: plugin/models.py:58 plugin/serializers.py:90 msgid "Package Name" msgstr "" -#: plugin/models.py:51 +#: plugin/models.py:60 msgid "Name of the installed package, if the plugin was installed via PIP" msgstr "" -#: plugin/models.py:56 +#: plugin/models.py:65 msgid "Is the plugin active" msgstr "" -#: plugin/models.py:147 templates/js/translated/table_filters.js:370 +#: plugin/models.py:156 templates/js/translated/table_filters.js:370 #: templates/js/translated/table_filters.js:504 msgid "Installed" msgstr "" -#: plugin/models.py:156 +#: plugin/models.py:165 msgid "Sample plugin" msgstr "" -#: plugin/models.py:164 +#: plugin/models.py:173 msgid "Builtin Plugin" msgstr "" -#: plugin/models.py:172 +#: plugin/models.py:181 msgid "Package Plugin" msgstr "" -#: plugin/models.py:196 templates/InvenTree/settings/plugin_settings.html:9 +#: plugin/models.py:205 report/models.py:474 +#: templates/InvenTree/settings/plugin_settings.html:9 #: templates/js/translated/plugin.js:51 msgid "Plugin" msgstr "" -#: plugin/models.py:243 +#: plugin/models.py:252 msgid "Method" msgstr "" @@ -8302,17 +8177,17 @@ msgstr "" msgid "No author found" msgstr "" -#: plugin/registry.py:588 +#: plugin/registry.py:597 #, python-brace-format msgid "Plugin '{p}' is not compatible with the current InvenTree version {v}" msgstr "" -#: plugin/registry.py:591 +#: plugin/registry.py:600 #, python-brace-format msgid "Plugin requires at least version {v}" msgstr "" -#: plugin/registry.py:593 +#: plugin/registry.py:602 #, python-brace-format msgid "Plugin requires at most version {v}" msgstr "" @@ -8395,279 +8270,363 @@ msgstr "" msgid "Either packagename of URL must be provided" msgstr "" -#: plugin/serializers.py:156 +#: plugin/serializers.py:161 msgid "Full reload" msgstr "" -#: plugin/serializers.py:157 +#: plugin/serializers.py:162 msgid "Perform a full reload of the plugin registry" msgstr "" -#: plugin/serializers.py:163 +#: plugin/serializers.py:168 msgid "Force reload" msgstr "" -#: plugin/serializers.py:165 +#: plugin/serializers.py:170 msgid "Force a reload of the plugin registry, even if it is already loaded" msgstr "" -#: plugin/serializers.py:172 +#: plugin/serializers.py:177 msgid "Collect plugins" msgstr "" -#: plugin/serializers.py:173 +#: plugin/serializers.py:178 msgid "Collect plugins and add them to the registry" msgstr "" -#: plugin/serializers.py:195 +#: plugin/serializers.py:205 msgid "Activate Plugin" msgstr "" -#: plugin/serializers.py:196 +#: plugin/serializers.py:206 msgid "Activate this plugin" msgstr "" -#: plugin/serializers.py:219 +#: plugin/serializers.py:234 msgid "Delete configuration" msgstr "" -#: plugin/serializers.py:220 +#: plugin/serializers.py:235 msgid "Delete the plugin configuration from the database" msgstr "" -#: report/api.py:158 +#: report/api.py:77 msgid "No valid objects provided to template" msgstr "" -#: report/api.py:197 report/api.py:234 +#: report/api.py:89 report/serializers.py:53 +msgid "Model Type" +msgstr "" + +#: report/api.py:92 report/models.py:438 report/serializers.py:98 +#: report/serializers.py:148 templates/js/translated/purchase_order.js:1747 +#: templates/js/translated/return_order.js:353 +#: templates/js/translated/sales_order.js:887 +#: templates/js/translated/sales_order.js:1047 +msgid "Items" +msgstr "" + +#: report/api.py:168 +msgid "Plugin not found" +msgstr "" + +#: report/api.py:170 +msgid "Plugin is not active" +msgstr "" + +#: report/api.py:172 +msgid "Plugin does not support label printing" +msgstr "" + +#: report/api.py:221 +msgid "Invalid label dimensions" +msgstr "" + +#: report/api.py:236 report/api.py:316 +msgid "No valid items provided to template" +msgstr "" + +#: report/api.py:271 +msgid "Error printing label" +msgstr "" + +#: report/api.py:362 report/api.py:398 #, 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 +#: report/helpers.py:41 msgid "A4" msgstr "" -#: report/helpers.py:16 +#: report/helpers.py:42 msgid "A3" msgstr "" -#: report/helpers.py:17 +#: report/helpers.py:43 msgid "Legal" msgstr "" -#: report/helpers.py:18 +#: report/helpers.py:44 msgid "Letter" msgstr "" -#: report/models.py:177 +#: report/models.py:118 +msgid "Template file with this name already exists" +msgstr "" + +#: report/models.py:150 msgid "Template name" msgstr "" -#: report/models.py:183 -msgid "Report template file" +#: report/models.py:156 +msgid "Template description" msgstr "" -#: report/models.py:190 -msgid "Report template description" +#: report/models.py:162 +msgid "Revision number (auto-increments)" msgstr "" -#: report/models.py:196 -msgid "Report revision number (auto-increments)" +#: report/models.py:202 +msgid "Filename Pattern" msgstr "" -#: report/models.py:204 +#: report/models.py:203 +msgid "Pattern for generating filenames" +msgstr "" + +#: report/models.py:208 +msgid "Template is enabled" +msgstr "" + +#: report/models.py:214 +msgid "Target model type for template" +msgstr "" + +#: report/models.py:234 +msgid "Filters" +msgstr "" + +#: report/models.py:235 +msgid "Template query filters (comma-separated list of key=value pairs)" +msgstr "" + +#: report/models.py:294 report/models.py:361 +msgid "Template file" +msgstr "" + +#: report/models.py:302 msgid "Page size for PDF reports" msgstr "" -#: report/models.py:210 +#: report/models.py:308 msgid "Render report in landscape orientation" msgstr "" -#: report/models.py:318 -msgid "Pattern for generating report filenames" +#: report/models.py:367 +msgid "Width [mm]" msgstr "" -#: report/models.py:325 -msgid "Report template is enabled" +#: report/models.py:368 +msgid "Label width, specified in mm" msgstr "" -#: report/models.py:347 -msgid "StockItem query filters (comma-separated list of key=value pairs)" +#: report/models.py:374 +msgid "Height [mm]" msgstr "" -#: report/models.py:354 -msgid "Include Installed Tests" +#: report/models.py:375 +msgid "Label height, specified in mm" msgstr "" -#: report/models.py:356 -msgid "Include test results for stock items installed inside assembled item" +#: report/models.py:438 +msgid "Number of items to process" msgstr "" -#: report/models.py:424 -msgid "Build Filters" +#: report/models.py:444 +msgid "Report generation is complete" msgstr "" -#: report/models.py:425 -msgid "Build query filters (comma-separated list of key=value pairs" +#: report/models.py:448 templates/js/translated/build.js:2177 +msgid "Progress" msgstr "" -#: report/models.py:464 -msgid "Part Filters" +#: report/models.py:448 +msgid "Report generation progress" msgstr "" -#: report/models.py:465 -msgid "Part query filters (comma-separated list of key=value pairs" +#: report/models.py:456 +msgid "Report Template" msgstr "" -#: report/models.py:497 -msgid "Purchase order query filters" +#: report/models.py:463 report/models.py:486 +msgid "Output File" msgstr "" -#: report/models.py:533 -msgid "Sales order query filters" +#: report/models.py:464 report/models.py:487 +msgid "Generated output file" msgstr "" -#: report/models.py:569 -msgid "Return order query filters" +#: report/models.py:475 +msgid "Label output plugin" msgstr "" -#: report/models.py:641 -msgid "Snippet file with this name already exists" +#: report/models.py:479 +msgid "Label Template" msgstr "" -#: report/models.py:648 +#: report/models.py:502 msgid "Snippet" msgstr "" -#: report/models.py:649 +#: report/models.py:503 msgid "Report snippet file" msgstr "" -#: report/models.py:656 +#: report/models.py:510 msgid "Snippet file description" msgstr "" -#: report/models.py:714 -msgid "Asset file with this name already exists" -msgstr "" - -#: report/models.py:722 +#: report/models.py:528 msgid "Asset" msgstr "" -#: report/models.py:723 +#: report/models.py:529 msgid "Report asset file" msgstr "" -#: report/models.py:730 +#: report/models.py:536 msgid "Asset file description" msgstr "" -#: report/models.py:752 -msgid "stock location query filters (comma-separated list of key=value pairs)" +#: report/serializers.py:91 +msgid "Select report template" +msgstr "" + +#: report/serializers.py:99 report/serializers.py:149 +msgid "List of item primary keys to include in the report" +msgstr "" + +#: report/serializers.py:132 +msgid "Select label template" +msgstr "" + +#: report/serializers.py:140 +msgid "Printing Plugin" +msgstr "" + +#: report/serializers.py:141 +msgid "Select plugin to use for label printing" +msgstr "" + +#: report/templates/label/part_label.html:31 +#: report/templates/label/stockitem_qr.html:21 +#: report/templates/label/stocklocation_qr.html:20 +#: templates/allauth_2fa/setup.html:18 +msgid "QR Code" +msgstr "" + +#: report/templates/label/part_label_code128.html:31 +#: report/templates/label/stocklocation_qr_and_text.html:31 +#: templates/qr_code.html:7 +msgid "QR code" msgstr "" #: report/templates/report/inventree_bill_of_materials_report.html:133 msgid "Materials needed" msgstr "" -#: report/templates/report/inventree_build_order_base.html:146 +#: report/templates/report/inventree_build_order_report.html:146 msgid "Required For" msgstr "" -#: report/templates/report/inventree_po_report_base.html:15 +#: report/templates/report/inventree_purchase_order_report.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 +#: report/templates/report/inventree_purchase_order_report.html:30 +#: report/templates/report/inventree_sales_order_report.html:30 #: templates/js/translated/order.js:316 templates/js/translated/pricing.js:527 #: templates/js/translated/pricing.js:596 #: templates/js/translated/pricing.js:834 -#: templates/js/translated/purchase_order.js:2116 -#: templates/js/translated/sales_order.js:1837 +#: templates/js/translated/purchase_order.js:2115 +#: templates/js/translated/sales_order.js:1873 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 +#: report/templates/report/inventree_purchase_order_report.html:55 +#: report/templates/report/inventree_return_order_report.html:48 +#: report/templates/report/inventree_sales_order_report.html:55 msgid "Extra Line Items" msgstr "" -#: report/templates/report/inventree_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 +#: report/templates/report/inventree_purchase_order_report.html:72 +#: report/templates/report/inventree_sales_order_report.html:72 +#: templates/js/translated/purchase_order.js:2017 +#: templates/js/translated/sales_order.js:1842 msgid "Total" msgstr "" -#: report/templates/report/inventree_return_order_report_base.html:25 -#: report/templates/report/inventree_test_report_base.html:88 -#: stock/models.py:809 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 +#: report/templates/report/inventree_return_order_report.html:25 +#: report/templates/report/inventree_test_report.html:88 stock/models.py:826 +#: stock/serializers.py:150 stock/templates/stock/item_base.html:311 +#: templates/js/translated/build.js:519 templates/js/translated/build.js:1367 +#: templates/js/translated/build.js:2355 +#: templates/js/translated/model_renderers.js:230 +#: templates/js/translated/return_order.js:539 +#: templates/js/translated/return_order.js:723 #: templates/js/translated/sales_order.js:315 -#: templates/js/translated/sales_order.js:1611 -#: templates/js/translated/sales_order.js:1696 +#: templates/js/translated/sales_order.js:1647 +#: templates/js/translated/sales_order.js:1732 #: templates/js/translated/stock.js:596 msgid "Serial Number" msgstr "" -#: report/templates/report/inventree_slr_report.html:97 +#: report/templates/report/inventree_stock_location_report.html:97 msgid "Stock location items" msgstr "" -#: report/templates/report/inventree_test_report_base.html:21 +#: report/templates/report/inventree_test_report.html:21 msgid "Stock Item Test Report" msgstr "" -#: report/templates/report/inventree_test_report_base.html:97 +#: report/templates/report/inventree_test_report.html:97 msgid "Test Results" msgstr "" -#: report/templates/report/inventree_test_report_base.html:102 -#: templates/js/translated/stock.js:1492 +#: report/templates/report/inventree_test_report.html:102 +#: templates/js/translated/stock.js:1495 msgid "Test" msgstr "" -#: report/templates/report/inventree_test_report_base.html:103 -#: stock/models.py:2430 +#: report/templates/report/inventree_test_report.html:103 stock/models.py:2423 msgid "Result" msgstr "" -#: report/templates/report/inventree_test_report_base.html:130 +#: report/templates/report/inventree_test_report.html:130 msgid "Pass" msgstr "" -#: report/templates/report/inventree_test_report_base.html:132 +#: report/templates/report/inventree_test_report.html:132 msgid "Fail" msgstr "" -#: report/templates/report/inventree_test_report_base.html:139 +#: report/templates/report/inventree_test_report.html:139 msgid "No result (required)" msgstr "" -#: report/templates/report/inventree_test_report_base.html:141 +#: report/templates/report/inventree_test_report.html:141 msgid "No result" msgstr "" -#: report/templates/report/inventree_test_report_base.html:154 +#: report/templates/report/inventree_test_report.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 +#: report/templates/report/inventree_test_report.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 "" @@ -8724,7 +8683,7 @@ msgstr "" msgid "Customer ID" msgstr "" -#: stock/admin.py:201 stock/models.py:789 +#: stock/admin.py:201 stock/models.py:806 #: stock/templates/stock/item_base.html:354 msgid "Installed In" msgstr "" @@ -8749,555 +8708,723 @@ msgstr "" msgid "Delete on Deplete" msgstr "" -#: stock/admin.py:256 stock/models.py:883 +#: stock/admin.py:256 stock/models.py:900 #: stock/templates/stock/item_base.html:433 -#: templates/js/translated/stock.js:2229 users/models.py:124 +#: templates/js/translated/stock.js:2230 users/models.py:124 msgid "Expiry Date" msgstr "" -#: stock/api.py:284 +#: stock/api.py:318 msgid "Filter by location depth" msgstr "" -#: stock/api.py:304 +#: stock/api.py:338 msgid "Include sub-locations in filtered results" msgstr "" -#: stock/api.py:325 +#: stock/api.py:359 msgid "Parent Location" msgstr "" -#: stock/api.py:326 +#: stock/api.py:360 msgid "Filter by parent location" msgstr "" -#: stock/api.py:579 templates/js/translated/table_filters.js:427 +#: stock/api.py:615 templates/js/translated/table_filters.js:427 msgid "External Location" msgstr "" -#: stock/api.py:767 +#: stock/api.py:803 msgid "Part Tree" msgstr "" -#: stock/api.py:797 +#: stock/api.py:833 msgid "Expiry date before" msgstr "" -#: stock/api.py:801 +#: stock/api.py:837 msgid "Expiry date after" msgstr "" -#: stock/api.py:804 stock/templates/stock/item_base.html:439 +#: stock/api.py:840 stock/templates/stock/item_base.html:439 #: templates/js/translated/table_filters.js:441 msgid "Stale" msgstr "" -#: stock/api.py:891 +#: stock/api.py:927 msgid "Quantity is required" msgstr "" -#: stock/api.py:897 +#: stock/api.py:933 msgid "Valid part must be supplied" msgstr "" -#: stock/api.py:928 +#: stock/api.py:964 msgid "The given supplier part does not exist" msgstr "" -#: stock/api.py:938 +#: stock/api.py:974 msgid "The supplier part has a pack size defined, but flag use_pack_size not set" msgstr "" -#: stock/api.py:969 +#: stock/api.py:1005 msgid "Serial numbers cannot be supplied for a non-trackable part" msgstr "" -#: stock/models.py:63 +#: stock/models.py:59 msgid "Stock Location type" msgstr "" -#: stock/models.py:64 +#: stock/models.py:60 msgid "Stock Location types" msgstr "" -#: stock/models.py:90 +#: stock/models.py:86 msgid "Default icon for all locations that have no icon set (optional)" msgstr "" -#: stock/models.py:125 stock/models.py:771 +#: stock/models.py:123 stock/models.py:788 #: 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 +#: stock/models.py:124 stock/templates/stock/location.html:186 #: templates/InvenTree/search.html:166 templates/js/translated/search.js:178 #: users/models.py:205 msgid "Stock Locations" msgstr "" -#: stock/models.py:158 stock/models.py:932 +#: stock/models.py:166 stock/models.py:949 #: stock/templates/stock/item_base.html:247 msgid "Owner" msgstr "" -#: stock/models.py:159 stock/models.py:933 +#: stock/models.py:167 stock/models.py:950 msgid "Select Owner" msgstr "" -#: stock/models.py:167 +#: stock/models.py:175 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 +#: stock/models.py:182 templates/js/translated/stock.js:2781 #: templates/js/translated/table_filters.js:243 msgid "External" msgstr "" -#: stock/models.py:175 +#: stock/models.py:183 msgid "This is an external stock location" msgstr "" -#: stock/models.py:181 templates/js/translated/stock.js:2790 +#: stock/models.py:189 templates/js/translated/stock.js:2790 #: templates/js/translated/table_filters.js:246 msgid "Location type" msgstr "" -#: stock/models.py:185 +#: stock/models.py:193 msgid "Stock location type of this location" msgstr "" -#: stock/models.py:254 +#: stock/models.py:262 msgid "You cannot make this stock location structural because some stock items are already located into it!" msgstr "" -#: stock/models.py:626 +#: stock/models.py:643 msgid "Stock items cannot be located into structural stock locations!" msgstr "" -#: stock/models.py:653 stock/serializers.py:290 +#: stock/models.py:670 stock/serializers.py:419 msgid "Stock item cannot be created for virtual parts" msgstr "" -#: stock/models.py:670 +#: stock/models.py:687 #, python-brace-format msgid "Part type ('{self.supplier_part.part}') must be {self.part}" msgstr "" -#: stock/models.py:680 stock/models.py:693 +#: stock/models.py:697 stock/models.py:710 msgid "Quantity must be 1 for item with a serial number" msgstr "" -#: stock/models.py:683 +#: stock/models.py:700 msgid "Serial number cannot be set if quantity greater than 1" msgstr "" -#: stock/models.py:707 +#: stock/models.py:724 msgid "Item cannot belong to itself" msgstr "" -#: stock/models.py:712 +#: stock/models.py:729 msgid "Item must have a build reference if is_building=True" msgstr "" -#: stock/models.py:725 +#: stock/models.py:742 msgid "Build reference does not point to the same part object" msgstr "" -#: stock/models.py:741 +#: stock/models.py:758 msgid "Parent Stock Item" msgstr "" -#: stock/models.py:753 +#: stock/models.py:770 msgid "Base part" msgstr "" -#: stock/models.py:763 +#: stock/models.py:780 msgid "Select a matching supplier part for this stock item" msgstr "" -#: stock/models.py:775 +#: stock/models.py:792 msgid "Where is this stock item located?" msgstr "" -#: stock/models.py:783 stock/serializers.py:1351 +#: stock/models.py:800 stock/serializers.py:1480 msgid "Packaging this stock item is stored in" msgstr "" -#: stock/models.py:794 +#: stock/models.py:811 msgid "Is this item installed in another item?" msgstr "" -#: stock/models.py:813 +#: stock/models.py:830 msgid "Serial number for this item" msgstr "" -#: stock/models.py:827 stock/serializers.py:1334 +#: stock/models.py:844 stock/serializers.py:1463 msgid "Batch code for this stock item" msgstr "" -#: stock/models.py:832 +#: stock/models.py:849 msgid "Stock Quantity" msgstr "" -#: stock/models.py:842 +#: stock/models.py:859 msgid "Source Build" msgstr "" -#: stock/models.py:845 +#: stock/models.py:862 msgid "Build for this stock item" msgstr "" -#: stock/models.py:852 stock/templates/stock/item_base.html:363 +#: stock/models.py:869 stock/templates/stock/item_base.html:363 msgid "Consumed By" msgstr "" -#: stock/models.py:855 +#: stock/models.py:872 msgid "Build order which consumed this stock item" msgstr "" -#: stock/models.py:864 +#: stock/models.py:881 msgid "Source Purchase Order" msgstr "" -#: stock/models.py:868 +#: stock/models.py:885 msgid "Purchase order for this stock item" msgstr "" -#: stock/models.py:874 +#: stock/models.py:891 msgid "Destination Sales Order" msgstr "" -#: stock/models.py:885 +#: stock/models.py:902 msgid "Expiry date for stock item. Stock will be considered expired after this date" msgstr "" -#: stock/models.py:903 +#: stock/models.py:920 msgid "Delete on deplete" msgstr "" -#: stock/models.py:904 +#: stock/models.py:921 msgid "Delete this Stock Item when stock is depleted" msgstr "" -#: stock/models.py:924 +#: stock/models.py:941 msgid "Single unit purchase price at time of purchase" msgstr "" -#: stock/models.py:955 +#: stock/models.py:972 msgid "Converted to part" msgstr "" -#: stock/models.py:1465 +#: stock/models.py:1490 msgid "Part is not set as trackable" msgstr "" -#: stock/models.py:1471 +#: stock/models.py:1496 msgid "Quantity must be integer" msgstr "" -#: stock/models.py:1479 +#: stock/models.py:1504 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({self.quantity})" msgstr "" -#: stock/models.py:1485 +#: stock/models.py:1510 msgid "Serial numbers must be a list of integers" msgstr "" -#: stock/models.py:1490 +#: stock/models.py:1515 msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:1498 stock/serializers.py:529 +#: stock/models.py:1523 stock/serializers.py:658 msgid "Serial numbers already exist" msgstr "" -#: stock/models.py:1595 +#: stock/models.py:1620 msgid "Test template does not exist" msgstr "" -#: stock/models.py:1613 +#: stock/models.py:1638 msgid "Stock item has been assigned to a sales order" msgstr "" -#: stock/models.py:1617 +#: stock/models.py:1642 msgid "Stock item is installed in another item" msgstr "" -#: stock/models.py:1620 +#: stock/models.py:1645 msgid "Stock item contains other items" msgstr "" -#: stock/models.py:1623 +#: stock/models.py:1648 msgid "Stock item has been assigned to a customer" msgstr "" -#: stock/models.py:1626 +#: stock/models.py:1651 msgid "Stock item is currently in production" msgstr "" -#: stock/models.py:1629 +#: stock/models.py:1654 msgid "Serialized stock cannot be merged" msgstr "" -#: stock/models.py:1636 stock/serializers.py:1240 +#: stock/models.py:1661 stock/serializers.py:1369 msgid "Duplicate stock items" msgstr "" -#: stock/models.py:1640 +#: stock/models.py:1665 msgid "Stock items must refer to the same part" msgstr "" -#: stock/models.py:1648 +#: stock/models.py:1673 msgid "Stock items must refer to the same supplier part" msgstr "" -#: stock/models.py:1653 +#: stock/models.py:1678 msgid "Stock status codes must match" msgstr "" -#: stock/models.py:1870 +#: stock/models.py:1905 msgid "StockItem cannot be moved as it is not in stock" msgstr "" -#: stock/models.py:2333 +#: stock/models.py:2326 msgid "Entry notes" msgstr "" -#: stock/models.py:2398 +#: stock/models.py:2391 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:2403 +#: stock/models.py:2396 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:2430 +#: stock/models.py:2423 msgid "Test result" msgstr "" -#: stock/models.py:2437 +#: stock/models.py:2430 msgid "Test output value" msgstr "" -#: stock/models.py:2445 +#: stock/models.py:2438 msgid "Test result attachment" msgstr "" -#: stock/models.py:2449 +#: stock/models.py:2442 msgid "Test notes" msgstr "" -#: stock/models.py:2457 templates/js/translated/stock.js:1545 +#: stock/models.py:2450 templates/js/translated/stock.js:1548 msgid "Test station" msgstr "" -#: stock/models.py:2458 +#: stock/models.py:2451 msgid "The identifier of the test station where the test was performed" msgstr "" -#: stock/models.py:2464 +#: stock/models.py:2457 msgid "Started" msgstr "" -#: stock/models.py:2465 +#: stock/models.py:2458 msgid "The timestamp of the test start" msgstr "" -#: stock/models.py:2471 +#: stock/models.py:2464 msgid "Finished" msgstr "" -#: stock/models.py:2472 +#: stock/models.py:2465 msgid "The timestamp of the test finish" msgstr "" -#: stock/serializers.py:100 +#: stock/serializers.py:75 +msgid "Generated batch code" +msgstr "" + +#: stock/serializers.py:84 +msgid "Select build order" +msgstr "" + +#: stock/serializers.py:93 +msgid "Select stock item to generate batch code for" +msgstr "" + +#: stock/serializers.py:102 +msgid "Select location to generate batch code for" +msgstr "" + +#: stock/serializers.py:111 +msgid "Select part to generate batch code for" +msgstr "" + +#: stock/serializers.py:120 +msgid "Select purchase order" +msgstr "" + +#: stock/serializers.py:127 +msgid "Enter quantity for batch code" +msgstr "" + +#: stock/serializers.py:150 +msgid "Generated serial number" +msgstr "" + +#: stock/serializers.py:159 +msgid "Select part to generate serial number for" +msgstr "" + +#: stock/serializers.py:167 +msgid "Quantity of serial numbers to generate" +msgstr "" + +#: stock/serializers.py:229 msgid "Test template for this result" msgstr "" -#: stock/serializers.py:119 +#: stock/serializers.py:248 msgid "Template ID or test name must be provided" msgstr "" -#: stock/serializers.py:151 +#: stock/serializers.py:280 msgid "The test finished time cannot be earlier than the test started time" msgstr "" -#: stock/serializers.py:184 +#: stock/serializers.py:313 msgid "Serial number is too large" msgstr "" -#: stock/serializers.py:282 +#: stock/serializers.py:411 msgid "Use pack size when adding: the quantity defined is the number of packs" msgstr "" -#: stock/serializers.py:402 +#: stock/serializers.py:531 msgid "Purchase price of this stock item, per unit or pack" msgstr "" -#: stock/serializers.py:464 +#: stock/serializers.py:593 msgid "Enter number of stock items to serialize" msgstr "" -#: stock/serializers.py:477 +#: stock/serializers.py:606 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({q})" msgstr "" -#: stock/serializers.py:484 +#: stock/serializers.py:613 msgid "Enter serial numbers for new items" msgstr "" -#: stock/serializers.py:495 stock/serializers.py:1197 stock/serializers.py:1453 +#: stock/serializers.py:624 stock/serializers.py:1326 stock/serializers.py:1582 msgid "Destination stock location" msgstr "" -#: stock/serializers.py:502 +#: stock/serializers.py:631 msgid "Optional note field" msgstr "" -#: stock/serializers.py:512 +#: stock/serializers.py:641 msgid "Serial numbers cannot be assigned to this part" msgstr "" -#: stock/serializers.py:567 +#: stock/serializers.py:696 msgid "Select stock item to install" msgstr "" -#: stock/serializers.py:574 +#: stock/serializers.py:703 msgid "Quantity to Install" msgstr "" -#: stock/serializers.py:575 +#: stock/serializers.py:704 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 +#: stock/serializers.py:709 stock/serializers.py:789 stock/serializers.py:885 +#: stock/serializers.py:935 msgid "Add transaction note (optional)" msgstr "" -#: stock/serializers.py:588 +#: stock/serializers.py:717 msgid "Quantity to install must be at least 1" msgstr "" -#: stock/serializers.py:596 +#: stock/serializers.py:725 msgid "Stock item is unavailable" msgstr "" -#: stock/serializers.py:607 +#: stock/serializers.py:736 msgid "Selected part is not in the Bill of Materials" msgstr "" -#: stock/serializers.py:620 +#: stock/serializers.py:749 msgid "Quantity to install must not exceed available quantity" msgstr "" -#: stock/serializers.py:655 +#: stock/serializers.py:784 msgid "Destination location for uninstalled item" msgstr "" -#: stock/serializers.py:690 +#: stock/serializers.py:819 msgid "Select part to convert stock item into" msgstr "" -#: stock/serializers.py:703 +#: stock/serializers.py:832 msgid "Selected part is not a valid option for conversion" msgstr "" -#: stock/serializers.py:720 +#: stock/serializers.py:849 msgid "Cannot convert stock item with assigned SupplierPart" msgstr "" -#: stock/serializers.py:751 +#: stock/serializers.py:880 msgid "Destination location for returned item" msgstr "" -#: stock/serializers.py:788 +#: stock/serializers.py:917 msgid "Select stock items to change status" msgstr "" -#: stock/serializers.py:794 +#: stock/serializers.py:923 msgid "No stock items selected" msgstr "" -#: stock/serializers.py:890 stock/serializers.py:953 +#: stock/serializers.py:1019 stock/serializers.py:1082 #: stock/templates/stock/location.html:165 -#: stock/templates/stock/location.html:213 +#: stock/templates/stock/location.html:220 #: stock/templates/stock/location_sidebar.html:5 msgid "Sublocations" msgstr "" -#: stock/serializers.py:1069 +#: stock/serializers.py:1198 msgid "Part must be salable" msgstr "" -#: stock/serializers.py:1073 +#: stock/serializers.py:1202 msgid "Item is allocated to a sales order" msgstr "" -#: stock/serializers.py:1077 +#: stock/serializers.py:1206 msgid "Item is allocated to a build order" msgstr "" -#: stock/serializers.py:1101 +#: stock/serializers.py:1230 msgid "Customer to assign stock items" msgstr "" -#: stock/serializers.py:1107 +#: stock/serializers.py:1236 msgid "Selected company is not a customer" msgstr "" -#: stock/serializers.py:1115 +#: stock/serializers.py:1244 msgid "Stock assignment notes" msgstr "" -#: stock/serializers.py:1125 stock/serializers.py:1379 +#: stock/serializers.py:1254 stock/serializers.py:1508 msgid "A list of stock items must be provided" msgstr "" -#: stock/serializers.py:1204 +#: stock/serializers.py:1333 msgid "Stock merging notes" msgstr "" -#: stock/serializers.py:1209 +#: stock/serializers.py:1338 msgid "Allow mismatched suppliers" msgstr "" -#: stock/serializers.py:1210 +#: stock/serializers.py:1339 msgid "Allow stock items with different supplier parts to be merged" msgstr "" -#: stock/serializers.py:1215 +#: stock/serializers.py:1344 msgid "Allow mismatched status" msgstr "" -#: stock/serializers.py:1216 +#: stock/serializers.py:1345 msgid "Allow stock items with different status codes to be merged" msgstr "" -#: stock/serializers.py:1226 +#: stock/serializers.py:1355 msgid "At least two stock items must be provided" msgstr "" -#: stock/serializers.py:1293 +#: stock/serializers.py:1422 msgid "No Change" msgstr "" -#: stock/serializers.py:1322 +#: stock/serializers.py:1451 msgid "StockItem primary key value" msgstr "" -#: stock/serializers.py:1341 +#: stock/serializers.py:1470 msgid "Stock item status code" msgstr "" -#: stock/serializers.py:1369 +#: stock/serializers.py:1498 msgid "Stock transaction notes" msgstr "" +#: stock/status_codes.py:11 +msgid "OK" +msgstr "" + +#: stock/status_codes.py:12 +msgid "Attention needed" +msgstr "Opmærksomhed påkrævet" + +#: stock/status_codes.py:13 +msgid "Damaged" +msgstr "Beskadiget" + +#: stock/status_codes.py:14 +msgid "Destroyed" +msgstr "Destrueret" + +#: stock/status_codes.py:15 +msgid "Rejected" +msgstr "Afvist" + +#: stock/status_codes.py:19 +msgid "Quarantined" +msgstr "I karantæne" + +#: stock/status_codes.py:40 +msgid "Legacy stock tracking entry" +msgstr "Forældet lager sporings post" + +#: stock/status_codes.py:42 templates/js/translated/stock.js:544 +msgid "Stock item created" +msgstr "Lager-element oprettet" + +#: stock/status_codes.py:45 +msgid "Edited stock item" +msgstr "Redigeret lager-element" + +#: stock/status_codes.py:46 +msgid "Assigned serial number" +msgstr "Serienummer tildelt" + +#: stock/status_codes.py:49 +msgid "Stock counted" +msgstr "Lagerbeholdning optalt" + +#: stock/status_codes.py:50 +msgid "Stock manually added" +msgstr "Lagerbeholdning tilføjet manuelt" + +#: stock/status_codes.py:51 +msgid "Stock manually removed" +msgstr "Lagerbeholdning fjernet manuelt" + +#: stock/status_codes.py:54 +msgid "Location changed" +msgstr "Lokation ændret" + +#: stock/status_codes.py:55 +msgid "Stock updated" +msgstr "Lager opdateret" + +#: stock/status_codes.py:58 +msgid "Installed into assembly" +msgstr "Monteret i samling" + +#: stock/status_codes.py:59 +msgid "Removed from assembly" +msgstr "Fjernet fra samling" + +#: stock/status_codes.py:61 +msgid "Installed component item" +msgstr "Installeret komponent element" + +#: stock/status_codes.py:62 +msgid "Removed component item" +msgstr "Fjernet komponent element" + +#: stock/status_codes.py:65 +msgid "Split from parent item" +msgstr "Opdel fra overordnet element" + +#: stock/status_codes.py:66 +msgid "Split child item" +msgstr "Opdel underordnet element" + +#: stock/status_codes.py:69 templates/js/translated/stock.js:1858 +msgid "Merged stock items" +msgstr "Flettede lagervarer" + +#: stock/status_codes.py:72 +msgid "Converted to variant" +msgstr "Konverteret til variant" + +#: stock/status_codes.py:75 +msgid "Build order output created" +msgstr "Byggeordre output genereret" + +#: stock/status_codes.py:76 +msgid "Build order output completed" +msgstr "Byggeorder output fuldført" + +#: stock/status_codes.py:77 +msgid "Build order output rejected" +msgstr "" + +#: stock/status_codes.py:78 templates/js/translated/stock.js:1764 +msgid "Consumed by build order" +msgstr "Brugt efter byggeordre" + +#: stock/status_codes.py:81 +msgid "Shipped against Sales Order" +msgstr "Afsendt mod salgsordre" + +#: stock/status_codes.py:84 +msgid "Received against Purchase Order" +msgstr "Modtaget mod indkøbsordre" + +#: stock/status_codes.py:87 +msgid "Returned against Return Order" +msgstr "Returneret mod returordre" + +#: stock/status_codes.py:90 templates/js/translated/table_filters.js:375 +msgid "Sent to customer" +msgstr "Sendt til kunde" + +#: stock/status_codes.py:91 +msgid "Returned from customer" +msgstr "Returneret fra kunde" + #: stock/templates/stock/item.html:17 msgid "Stock Tracking Information" msgstr "" @@ -9319,7 +9446,7 @@ msgstr "" msgid "Test Report" msgstr "" -#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:286 +#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:284 msgid "Delete Test Data" msgstr "" @@ -9339,11 +9466,11 @@ msgstr "" msgid "Install Stock Item" msgstr "" -#: stock/templates/stock/item.html:274 +#: stock/templates/stock/item.html:272 msgid "Delete all test results for this stock item" msgstr "" -#: stock/templates/stock/item.html:304 templates/js/translated/stock.js:1698 +#: stock/templates/stock/item.html:302 templates/js/translated/stock.js:1701 msgid "Add Test Result" msgstr "" @@ -9366,17 +9493,17 @@ msgid "Stock adjustment actions" msgstr "" #: stock/templates/stock/item_base.html:79 -#: stock/templates/stock/location.html:90 templates/js/translated/stock.js:1821 +#: stock/templates/stock/location.html:90 templates/js/translated/stock.js:1824 msgid "Count stock" msgstr "" #: stock/templates/stock/item_base.html:81 -#: templates/js/translated/stock.js:1803 +#: templates/js/translated/stock.js:1806 msgid "Add stock" msgstr "" #: stock/templates/stock/item_base.html:82 -#: templates/js/translated/stock.js:1812 +#: templates/js/translated/stock.js:1815 msgid "Remove stock" msgstr "" @@ -9385,12 +9512,12 @@ msgid "Serialize stock" msgstr "" #: stock/templates/stock/item_base.html:88 -#: stock/templates/stock/location.html:96 templates/js/translated/stock.js:1830 +#: stock/templates/stock/location.html:96 templates/js/translated/stock.js:1833 msgid "Transfer stock" msgstr "" #: stock/templates/stock/item_base.html:91 -#: templates/js/translated/stock.js:1884 +#: templates/js/translated/stock.js:1887 msgid "Assign to customer" msgstr "" @@ -9431,7 +9558,7 @@ 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 +#: templates/js/translated/build.js:2123 templates/navbar.html:38 msgid "Build" msgstr "" @@ -9497,7 +9624,7 @@ msgid "Available Quantity" msgstr "" #: stock/templates/stock/item_base.html:398 -#: templates/js/translated/build.js:2378 +#: templates/js/translated/build.js:2380 msgid "No location set" msgstr "" @@ -9528,40 +9655,40 @@ msgstr "" msgid "No stocktake performed" msgstr "" -#: stock/templates/stock/item_base.html:507 -#: templates/js/translated/stock.js:1951 +#: stock/templates/stock/item_base.html:504 +#: templates/js/translated/stock.js:1952 msgid "stock item" msgstr "" -#: stock/templates/stock/item_base.html:532 +#: stock/templates/stock/item_base.html:527 msgid "Edit Stock Status" msgstr "" -#: stock/templates/stock/item_base.html:541 +#: stock/templates/stock/item_base.html:536 msgid "Stock Item QR Code" msgstr "" -#: stock/templates/stock/item_base.html:552 +#: stock/templates/stock/item_base.html:547 msgid "Link Barcode to Stock Item" msgstr "" -#: stock/templates/stock/item_base.html:616 +#: stock/templates/stock/item_base.html:611 msgid "Select one of the part variants listed below." msgstr "" -#: stock/templates/stock/item_base.html:619 +#: stock/templates/stock/item_base.html:614 msgid "Warning" msgstr "" -#: stock/templates/stock/item_base.html:620 +#: stock/templates/stock/item_base.html:615 msgid "This action cannot be easily undone" msgstr "" -#: stock/templates/stock/item_base.html:628 +#: stock/templates/stock/item_base.html:623 msgid "Convert Stock Item" msgstr "" -#: stock/templates/stock/item_base.html:662 +#: stock/templates/stock/item_base.html:657 msgid "Return to Stock" msgstr "" @@ -9625,28 +9752,32 @@ msgstr "" 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 +#: stock/templates/stock/location.html:176 +msgid "Location Type" +msgstr "" + +#: stock/templates/stock/location.html:224 msgid "Create new stock location" msgstr "" -#: stock/templates/stock/location.html:218 +#: stock/templates/stock/location.html:225 msgid "New Location" msgstr "" -#: stock/templates/stock/location.html:287 +#: stock/templates/stock/location.html:295 #: templates/js/translated/stock.js:2572 msgid "stock location" msgstr "" -#: stock/templates/stock/location.html:315 +#: stock/templates/stock/location.html:317 msgid "Scanned stock container into this location" msgstr "" -#: stock/templates/stock/location.html:388 +#: stock/templates/stock/location.html:390 msgid "Stock Location QR Code" msgstr "" -#: stock/templates/stock/location.html:399 +#: stock/templates/stock/location.html:401 msgid "Link Barcode to Stock Location" msgstr "" @@ -9872,12 +10003,12 @@ msgstr "" 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/InvenTree/settings/login.html:27 templates/account/signup.html:5 #: templates/socialaccount/signup.html:5 msgid "Signup" msgstr "" -#: templates/InvenTree/settings/login.html:34 +#: templates/InvenTree/settings/login.html:36 msgid "Single Sign On" msgstr "" @@ -9916,11 +10047,11 @@ msgstr "" msgid "Part Settings" msgstr "" -#: templates/InvenTree/settings/part.html:42 +#: templates/InvenTree/settings/part.html:43 msgid "Part Import" msgstr "" -#: templates/InvenTree/settings/part.html:46 +#: templates/InvenTree/settings/part.html:47 msgid "Import Part" msgstr "" @@ -9954,36 +10085,36 @@ msgstr "" 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/plugin.html:38 #: templates/InvenTree/settings/sidebar.html:66 msgid "Plugins" msgstr "" -#: templates/InvenTree/settings/plugin.html:42 -#: templates/InvenTree/settings/plugin.html:43 +#: templates/InvenTree/settings/plugin.html:44 +#: templates/InvenTree/settings/plugin.html:45 #: templates/js/translated/plugin.js:151 msgid "Install Plugin" msgstr "" -#: templates/InvenTree/settings/plugin.html:45 -#: templates/InvenTree/settings/plugin.html:46 +#: templates/InvenTree/settings/plugin.html:47 +#: templates/InvenTree/settings/plugin.html:48 #: templates/js/translated/plugin.js:224 msgid "Reload Plugins" msgstr "" -#: templates/InvenTree/settings/plugin.html:56 +#: templates/InvenTree/settings/plugin.html:58 msgid "External plugins are not enabled for this InvenTree installation" msgstr "" -#: templates/InvenTree/settings/plugin.html:71 +#: templates/InvenTree/settings/plugin.html:73 msgid "Plugin Error Stack" msgstr "" -#: templates/InvenTree/settings/plugin.html:80 +#: templates/InvenTree/settings/plugin.html:82 msgid "Stage" msgstr "" -#: templates/InvenTree/settings/plugin.html:82 +#: templates/InvenTree/settings/plugin.html:84 #: templates/js/translated/notification.js:76 msgid "Message" msgstr "" @@ -10141,7 +10272,7 @@ 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:424 +#: templates/js/translated/stock.js:245 users/models.py:411 msgid "Delete" msgstr "" @@ -10162,7 +10293,7 @@ msgid "No project codes found" msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:158 -#: templates/js/translated/build.js:2226 +#: templates/js/translated/build.js:2228 msgid "group" msgstr "" @@ -10228,7 +10359,7 @@ msgid "Delete Location Type" msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:500 -#: templates/InvenTree/settings/stock.html:37 +#: templates/InvenTree/settings/stock.html:38 msgid "New Location Type" msgstr "" @@ -10250,7 +10381,7 @@ msgid "Home Page" msgstr "" #: templates/InvenTree/settings/sidebar.html:15 -#: templates/js/translated/forms.js:2159 templates/js/translated/tables.js:543 +#: templates/js/translated/forms.js:2167 templates/js/translated/tables.js:543 #: templates/navbar.html:107 templates/search.html:8 #: templates/search_form.html:6 templates/search_form.html:7 msgid "Search" @@ -10285,7 +10416,7 @@ msgstr "" msgid "Stock Settings" msgstr "" -#: templates/InvenTree/settings/stock.html:33 +#: templates/InvenTree/settings/stock.html:34 msgid "Stock Location Types" msgstr "" @@ -10384,49 +10515,49 @@ msgstr "" msgid "Remove multifactor" msgstr "" -#: templates/InvenTree/settings/user.html:168 +#: templates/InvenTree/settings/user.html:171 msgid "Active Sessions" msgstr "" -#: templates/InvenTree/settings/user.html:174 +#: templates/InvenTree/settings/user.html:177 msgid "Log out active sessions (except this one)" msgstr "" -#: templates/InvenTree/settings/user.html:175 +#: templates/InvenTree/settings/user.html:178 msgid "Log Out Active Sessions" msgstr "" -#: templates/InvenTree/settings/user.html:184 +#: templates/InvenTree/settings/user.html:187 msgid "unknown on unknown" msgstr "" -#: templates/InvenTree/settings/user.html:185 +#: templates/InvenTree/settings/user.html:188 msgid "unknown" msgstr "" -#: templates/InvenTree/settings/user.html:189 +#: templates/InvenTree/settings/user.html:192 msgid "IP Address" msgstr "" -#: templates/InvenTree/settings/user.html:190 +#: templates/InvenTree/settings/user.html:193 msgid "Device" msgstr "" -#: templates/InvenTree/settings/user.html:191 +#: templates/InvenTree/settings/user.html:194 msgid "Last Activity" msgstr "" -#: templates/InvenTree/settings/user.html:204 +#: templates/InvenTree/settings/user.html:207 #, python-format msgid "%(time)s ago (this session)" msgstr "" -#: templates/InvenTree/settings/user.html:206 +#: templates/InvenTree/settings/user.html:209 #, python-format msgid "%(time)s ago" msgstr "" -#: templates/InvenTree/settings/user.html:218 +#: templates/InvenTree/settings/user.html:223 msgid "Do you really want to remove the selected email address?" msgstr "" @@ -10607,26 +10738,26 @@ msgstr "" 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 +#: templates/account/login.html:6 templates/account/login.html:19 +#: templates/account/login.html:40 templates/socialaccount/login.html:5 msgid "Sign In" msgstr "" -#: templates/account/login.html:21 +#: templates/account/login.html:23 msgid "Not a member?" msgstr "" -#: templates/account/login.html:23 templates/account/signup.html:11 +#: templates/account/login.html:25 templates/account/signup.html:11 #: templates/account/signup.html:22 templates/socialaccount/signup.html:8 #: templates/socialaccount/signup.html:23 msgid "Sign Up" msgstr "" -#: templates/account/login.html:45 +#: templates/account/login.html:47 msgid "Forgot Password?" msgstr "" -#: templates/account/login.html:53 +#: templates/account/login.html:55 msgid "or log in with" msgstr "" @@ -10827,7 +10958,7 @@ 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 +#: templates/js/translated/bom.js:1674 templates/js/translated/build.js:2556 msgid "Required Quantity" msgstr "" @@ -10841,7 +10972,7 @@ msgid "Click on the following link to view this part" msgstr "" #: templates/email/low_stock_notification.html:18 -#: templates/js/translated/part.js:3218 +#: templates/js/translated/part.js:3217 msgid "Minimum Quantity" msgstr "" @@ -11006,7 +11137,7 @@ msgstr "" msgid "Unlink" msgstr "" -#: templates/js/translated/barcode.js:567 templates/js/translated/stock.js:1155 +#: templates/js/translated/barcode.js:567 templates/js/translated/stock.js:1158 msgid "Remove stock item" msgstr "" @@ -11196,7 +11327,7 @@ msgstr "" msgid "Substitutes Available" msgstr "" -#: templates/js/translated/bom.js:950 templates/js/translated/build.js:2501 +#: templates/js/translated/bom.js:950 templates/js/translated/build.js:2500 msgid "Variant stock allowed" msgstr "" @@ -11216,30 +11347,30 @@ msgstr "" msgid "No pricing available" msgstr "" -#: templates/js/translated/bom.js:1184 templates/js/translated/build.js:2622 +#: templates/js/translated/bom.js:1184 templates/js/translated/build.js:2621 msgid "External stock" msgstr "" -#: templates/js/translated/bom.js:1188 templates/js/translated/build.js:2596 -#: templates/js/translated/sales_order.js:1910 +#: templates/js/translated/bom.js:1188 templates/js/translated/build.js:2595 +#: templates/js/translated/sales_order.js:1946 msgid "No Stock Available" msgstr "" -#: templates/js/translated/bom.js:1193 templates/js/translated/build.js:2600 +#: templates/js/translated/bom.js:1193 templates/js/translated/build.js:2599 msgid "Includes variant and substitute stock" msgstr "" -#: templates/js/translated/bom.js:1195 templates/js/translated/build.js:2602 +#: templates/js/translated/bom.js:1195 templates/js/translated/build.js:2601 #: templates/js/translated/part.js:1256 -#: templates/js/translated/sales_order.js:1907 +#: templates/js/translated/sales_order.js:1943 msgid "Includes variant stock" msgstr "" -#: templates/js/translated/bom.js:1197 templates/js/translated/build.js:2604 +#: templates/js/translated/bom.js:1197 templates/js/translated/build.js:2603 msgid "Includes substitute stock" msgstr "" -#: templates/js/translated/bom.js:1225 templates/js/translated/build.js:2587 +#: templates/js/translated/bom.js:1225 templates/js/translated/build.js:2586 msgid "Consumable item" msgstr "" @@ -11271,7 +11402,7 @@ msgstr "" msgid "No BOM items found" msgstr "" -#: templates/js/translated/bom.js:1657 templates/js/translated/build.js:2486 +#: templates/js/translated/bom.js:1657 templates/js/translated/build.js:2485 msgid "Required Part" msgstr "" @@ -11440,207 +11571,207 @@ msgstr "" msgid "No build order allocations found" msgstr "" -#: templates/js/translated/build.js:989 templates/js/translated/build.js:2342 +#: templates/js/translated/build.js:991 templates/js/translated/build.js:2344 msgid "Allocated Quantity" msgstr "" -#: templates/js/translated/build.js:1003 +#: templates/js/translated/build.js:1005 msgid "Location not specified" msgstr "" -#: templates/js/translated/build.js:1025 +#: templates/js/translated/build.js:1027 msgid "Complete outputs" msgstr "" -#: templates/js/translated/build.js:1043 +#: templates/js/translated/build.js:1045 msgid "Scrap outputs" msgstr "" -#: templates/js/translated/build.js:1061 +#: templates/js/translated/build.js:1063 msgid "Delete outputs" msgstr "" -#: templates/js/translated/build.js:1115 +#: templates/js/translated/build.js:1116 msgid "build output" msgstr "" -#: templates/js/translated/build.js:1116 +#: templates/js/translated/build.js:1117 msgid "build outputs" msgstr "" -#: templates/js/translated/build.js:1120 +#: templates/js/translated/build.js:1121 msgid "Build output actions" msgstr "" -#: templates/js/translated/build.js:1294 +#: templates/js/translated/build.js:1297 msgid "No active build outputs found" msgstr "" -#: templates/js/translated/build.js:1387 +#: templates/js/translated/build.js:1390 msgid "Allocated Lines" msgstr "" -#: templates/js/translated/build.js:1401 +#: templates/js/translated/build.js:1404 msgid "Required Tests" msgstr "" -#: templates/js/translated/build.js:1573 +#: templates/js/translated/build.js:1576 #: templates/js/translated/purchase_order.js:611 -#: templates/js/translated/sales_order.js:1171 +#: templates/js/translated/sales_order.js:1207 msgid "Select Parts" msgstr "" -#: templates/js/translated/build.js:1574 -#: templates/js/translated/sales_order.js:1172 +#: templates/js/translated/build.js:1577 +#: templates/js/translated/sales_order.js:1208 msgid "You must select at least one part to allocate" msgstr "" -#: templates/js/translated/build.js:1637 -#: templates/js/translated/sales_order.js:1121 +#: templates/js/translated/build.js:1640 +#: templates/js/translated/sales_order.js:1157 msgid "Specify stock allocation quantity" msgstr "" -#: templates/js/translated/build.js:1714 +#: templates/js/translated/build.js:1717 msgid "All Parts Allocated" msgstr "" -#: templates/js/translated/build.js:1715 +#: templates/js/translated/build.js:1718 msgid "All selected parts have been fully allocated" msgstr "" -#: templates/js/translated/build.js:1729 -#: templates/js/translated/sales_order.js:1186 +#: templates/js/translated/build.js:1732 +#: templates/js/translated/sales_order.js:1222 msgid "Select source location (leave blank to take from all locations)" msgstr "" -#: templates/js/translated/build.js:1757 +#: templates/js/translated/build.js:1760 msgid "Allocate Stock Items to Build Order" msgstr "" -#: templates/js/translated/build.js:1768 -#: templates/js/translated/sales_order.js:1283 +#: templates/js/translated/build.js:1771 +#: templates/js/translated/sales_order.js:1319 msgid "No matching stock locations" msgstr "" -#: templates/js/translated/build.js:1841 -#: templates/js/translated/sales_order.js:1362 +#: templates/js/translated/build.js:1844 +#: templates/js/translated/sales_order.js:1398 msgid "No matching stock items" msgstr "" -#: templates/js/translated/build.js:1938 +#: templates/js/translated/build.js:1941 msgid "Automatic Stock Allocation" msgstr "" -#: templates/js/translated/build.js:1939 +#: templates/js/translated/build.js:1942 msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines" msgstr "" -#: templates/js/translated/build.js:1941 +#: templates/js/translated/build.js:1944 msgid "If a location is specified, stock will only be allocated from that location" msgstr "" -#: templates/js/translated/build.js:1942 +#: templates/js/translated/build.js:1945 msgid "If stock is considered interchangeable, it will be allocated from the first location it is found" msgstr "" -#: templates/js/translated/build.js:1943 +#: templates/js/translated/build.js:1946 msgid "If substitute stock is allowed, it will be used where stock of the primary part cannot be found" msgstr "" -#: templates/js/translated/build.js:1974 +#: templates/js/translated/build.js:1977 msgid "Allocate Stock Items" msgstr "" -#: templates/js/translated/build.js:2080 +#: templates/js/translated/build.js:2082 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 +#: templates/js/translated/build.js:2117 templates/js/translated/build.js:2479 +#: templates/js/translated/forms.js:2163 templates/js/translated/forms.js:2179 +#: templates/js/translated/part.js:2315 templates/js/translated/part.js:2741 +#: templates/js/translated/stock.js:1983 templates/js/translated/stock.js:2710 msgid "Select" msgstr "" -#: templates/js/translated/build.js:2129 +#: templates/js/translated/build.js:2131 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 +#: templates/js/translated/build.js:2213 templates/js/translated/stock.js:3042 msgid "No user information" msgstr "" -#: templates/js/translated/build.js:2387 -#: templates/js/translated/sales_order.js:1646 +#: templates/js/translated/build.js:2389 +#: templates/js/translated/sales_order.js:1682 msgid "Edit stock allocation" msgstr "" -#: templates/js/translated/build.js:2388 -#: templates/js/translated/sales_order.js:1647 +#: templates/js/translated/build.js:2390 +#: templates/js/translated/sales_order.js:1683 msgid "Delete stock allocation" msgstr "" -#: templates/js/translated/build.js:2403 +#: templates/js/translated/build.js:2405 msgid "Edit Allocation" msgstr "" -#: templates/js/translated/build.js:2415 +#: templates/js/translated/build.js:2417 msgid "Remove Allocation" msgstr "" -#: templates/js/translated/build.js:2456 +#: templates/js/translated/build.js:2455 msgid "build line" msgstr "" -#: templates/js/translated/build.js:2457 +#: templates/js/translated/build.js:2456 msgid "build lines" msgstr "" -#: templates/js/translated/build.js:2475 +#: templates/js/translated/build.js:2474 msgid "No build lines found" msgstr "" -#: templates/js/translated/build.js:2505 templates/js/translated/part.js:790 +#: templates/js/translated/build.js:2504 templates/js/translated/part.js:790 #: templates/js/translated/part.js:1202 msgid "Trackable part" msgstr "" -#: templates/js/translated/build.js:2540 +#: templates/js/translated/build.js:2539 msgid "Unit Quantity" msgstr "" -#: templates/js/translated/build.js:2592 -#: templates/js/translated/sales_order.js:1915 +#: templates/js/translated/build.js:2591 +#: templates/js/translated/sales_order.js:1951 msgid "Sufficient stock available" msgstr "" -#: templates/js/translated/build.js:2647 +#: templates/js/translated/build.js:2646 msgid "Consumable Item" msgstr "" -#: templates/js/translated/build.js:2652 +#: templates/js/translated/build.js:2653 msgid "Tracked item" msgstr "" -#: templates/js/translated/build.js:2659 -#: templates/js/translated/sales_order.js:2016 +#: templates/js/translated/build.js:2654 +msgid "Allocate tracked items against individual build outputs" +msgstr "" + +#: templates/js/translated/build.js:2662 +#: templates/js/translated/sales_order.js:2052 msgid "Build stock" msgstr "" -#: templates/js/translated/build.js:2664 templates/js/translated/stock.js:1865 +#: templates/js/translated/build.js:2667 templates/js/translated/stock.js:1868 msgid "Order stock" msgstr "" -#: templates/js/translated/build.js:2668 -#: templates/js/translated/sales_order.js:2010 +#: templates/js/translated/build.js:2671 +#: templates/js/translated/sales_order.js:2046 msgid "Allocate stock" msgstr "" -#: templates/js/translated/build.js:2672 +#: templates/js/translated/build.js:2675 msgid "Remove stock allocation" msgstr "" @@ -11886,12 +12017,12 @@ msgid "Delete price break" msgstr "" #: templates/js/translated/filters.js:186 -#: templates/js/translated/filters.js:672 +#: templates/js/translated/filters.js:667 msgid "true" msgstr "" #: templates/js/translated/filters.js:190 -#: templates/js/translated/filters.js:673 +#: templates/js/translated/filters.js:668 msgid "false" msgstr "" @@ -11923,7 +12054,7 @@ msgstr "" msgid "Clear all filters" msgstr "" -#: templates/js/translated/filters.js:582 +#: templates/js/translated/filters.js:577 msgid "Create filter" msgstr "" @@ -11956,32 +12087,32 @@ msgstr "" msgid "Enter a valid number" msgstr "" -#: templates/js/translated/forms.js:1473 templates/modals.html:19 +#: templates/js/translated/forms.js:1477 templates/modals.html:19 #: templates/modals.html:43 msgid "Form errors exist" msgstr "" -#: templates/js/translated/forms.js:1971 +#: templates/js/translated/forms.js:1975 msgid "No results found" msgstr "" -#: templates/js/translated/forms.js:2275 templates/js/translated/search.js:239 +#: templates/js/translated/forms.js:2285 templates/js/translated/search.js:239 msgid "Searching" msgstr "" -#: templates/js/translated/forms.js:2489 +#: templates/js/translated/forms.js:2499 msgid "Clear input" msgstr "" -#: templates/js/translated/forms.js:3091 +#: templates/js/translated/forms.js:3101 msgid "File Column" msgstr "" -#: templates/js/translated/forms.js:3091 +#: templates/js/translated/forms.js:3101 msgid "Field Name" msgstr "" -#: templates/js/translated/forms.js:3103 +#: templates/js/translated/forms.js:3113 msgid "Select Columns" msgstr "" @@ -12005,51 +12136,15 @@ msgstr "" msgid "No parts required for builds" msgstr "" -#: templates/js/translated/label.js:53 templates/js/translated/report.js:123 +#: templates/js/translated/label.js:55 templates/js/translated/report.js:38 msgid "Select Items" msgstr "" -#: templates/js/translated/label.js:54 +#: templates/js/translated/label.js:56 templates/js/translated/report.js:39 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 +#: templates/js/translated/label.js:150 msgid "Labels sent to printer" msgstr "" @@ -12167,7 +12262,7 @@ msgid "Delete Line" msgstr "" #: templates/js/translated/order.js:281 -#: templates/js/translated/purchase_order.js:1991 +#: templates/js/translated/purchase_order.js:1990 msgid "No line items found" msgstr "" @@ -12405,19 +12500,19 @@ msgid "Delete Part Parameter Template" msgstr "" #: templates/js/translated/part.js:1716 -#: templates/js/translated/purchase_order.js:1655 +#: templates/js/translated/purchase_order.js:1654 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 +#: templates/js/translated/purchase_order.js:2153 +#: templates/js/translated/return_order.js:755 +#: templates/js/translated/sales_order.js:1911 msgid "This line item is overdue" msgstr "" #: templates/js/translated/part.js:1906 -#: templates/js/translated/purchase_order.js:2221 +#: templates/js/translated/purchase_order.js:2220 msgid "Receive line item" msgstr "" @@ -12429,7 +12524,7 @@ msgstr "" msgid "Delete Part Relationship" msgstr "" -#: templates/js/translated/part.js:2079 templates/js/translated/part.js:2506 +#: templates/js/translated/part.js:2079 templates/js/translated/part.js:2505 msgid "No parts found" msgstr "" @@ -12445,101 +12540,101 @@ msgstr "" msgid "Set category" msgstr "" -#: templates/js/translated/part.js:2287 +#: templates/js/translated/part.js:2286 msgid "part" msgstr "" -#: templates/js/translated/part.js:2288 +#: templates/js/translated/part.js:2287 msgid "parts" msgstr "" -#: templates/js/translated/part.js:2384 +#: templates/js/translated/part.js:2383 msgid "No category" msgstr "" -#: templates/js/translated/part.js:2531 templates/js/translated/part.js:2661 +#: templates/js/translated/part.js:2530 templates/js/translated/part.js:2660 #: templates/js/translated/stock.js:2669 msgid "Display as list" msgstr "" -#: templates/js/translated/part.js:2547 +#: templates/js/translated/part.js:2546 msgid "Display as grid" msgstr "" -#: templates/js/translated/part.js:2645 +#: templates/js/translated/part.js:2644 msgid "No subcategories found" msgstr "" -#: templates/js/translated/part.js:2681 templates/js/translated/stock.js:2689 +#: templates/js/translated/part.js:2680 templates/js/translated/stock.js:2689 msgid "Display as tree" msgstr "" -#: templates/js/translated/part.js:2761 +#: templates/js/translated/part.js:2760 msgid "Load Subcategories" msgstr "" -#: templates/js/translated/part.js:2777 +#: templates/js/translated/part.js:2776 msgid "Subscribed category" msgstr "" -#: templates/js/translated/part.js:2864 +#: templates/js/translated/part.js:2863 msgid "No test templates matching query" msgstr "" -#: templates/js/translated/part.js:2886 templates/js/translated/search.js:342 +#: templates/js/translated/part.js:2885 templates/js/translated/search.js:342 msgid "results" msgstr "" -#: templates/js/translated/part.js:2936 templates/js/translated/stock.js:1453 +#: templates/js/translated/part.js:2935 templates/js/translated/stock.js:1456 msgid "Edit test result" msgstr "" -#: templates/js/translated/part.js:2937 templates/js/translated/stock.js:1454 -#: templates/js/translated/stock.js:1728 +#: templates/js/translated/part.js:2936 templates/js/translated/stock.js:1457 +#: templates/js/translated/stock.js:1731 msgid "Delete test result" msgstr "" -#: templates/js/translated/part.js:2941 +#: templates/js/translated/part.js:2940 msgid "This test is defined for a parent part" msgstr "" -#: templates/js/translated/part.js:2957 +#: templates/js/translated/part.js:2956 msgid "Edit Test Result Template" msgstr "" -#: templates/js/translated/part.js:2971 +#: templates/js/translated/part.js:2970 msgid "Delete Test Result Template" msgstr "" -#: templates/js/translated/part.js:3050 templates/js/translated/part.js:3051 +#: templates/js/translated/part.js:3049 templates/js/translated/part.js:3050 msgid "No date specified" msgstr "" -#: templates/js/translated/part.js:3053 +#: templates/js/translated/part.js:3052 msgid "Specified date is in the past" msgstr "" -#: templates/js/translated/part.js:3059 +#: templates/js/translated/part.js:3058 msgid "Speculative" msgstr "" -#: templates/js/translated/part.js:3109 +#: templates/js/translated/part.js:3108 msgid "No scheduling information available for this part" msgstr "" -#: templates/js/translated/part.js:3115 +#: templates/js/translated/part.js:3114 msgid "Error fetching scheduling information for this part" msgstr "" -#: templates/js/translated/part.js:3211 +#: templates/js/translated/part.js:3210 msgid "Scheduled Stock Quantities" msgstr "" -#: templates/js/translated/part.js:3227 +#: templates/js/translated/part.js:3226 msgid "Maximum Quantity" msgstr "" -#: templates/js/translated/part.js:3272 +#: templates/js/translated/part.js:3271 msgid "Minimum Stock Level" msgstr "" @@ -12665,7 +12760,7 @@ msgstr "" #: templates/js/translated/purchase_order.js:448 #: templates/js/translated/return_order.js:210 -#: templates/js/translated/sales_order.js:500 +#: templates/js/translated/sales_order.js:552 msgid "Mark this order as complete?" msgstr "" @@ -12678,7 +12773,6 @@ 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 "" @@ -12736,12 +12830,12 @@ msgid "No matching purchase orders" msgstr "" #: templates/js/translated/purchase_order.js:1073 -#: templates/js/translated/return_order.js:491 +#: templates/js/translated/return_order.js:490 msgid "Select Line Items" msgstr "" #: templates/js/translated/purchase_order.js:1074 -#: templates/js/translated/return_order.js:492 +#: templates/js/translated/return_order.js:491 msgid "At least one line item must be selected" msgstr "" @@ -12790,7 +12884,7 @@ msgid "Quantity to Receive" msgstr "" #: templates/js/translated/purchase_order.js:1333 -#: templates/js/translated/return_order.js:561 +#: templates/js/translated/return_order.js:560 msgid "Confirm receipt of items" msgstr "" @@ -12810,81 +12904,66 @@ msgstr "" 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 +#: templates/js/translated/purchase_order.js:1681 +#: templates/js/translated/return_order.js:285 +#: templates/js/translated/sales_order.js:810 +#: templates/js/translated/sales_order.js:1034 msgid "Order is overdue" msgstr "" -#: templates/js/translated/purchase_order.js: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 +#: templates/js/translated/purchase_order.js:1843 msgid "All selected Line items will be deleted" msgstr "" -#: templates/js/translated/purchase_order.js:1862 +#: templates/js/translated/purchase_order.js:1861 msgid "Delete selected Line items?" msgstr "" -#: templates/js/translated/purchase_order.js:1917 -#: templates/js/translated/sales_order.js:2070 +#: templates/js/translated/purchase_order.js:1916 +#: templates/js/translated/sales_order.js:2106 msgid "Duplicate Line Item" msgstr "" -#: templates/js/translated/purchase_order.js:1932 -#: templates/js/translated/return_order.js:476 -#: templates/js/translated/return_order.js:669 -#: templates/js/translated/sales_order.js:2083 +#: templates/js/translated/purchase_order.js:1931 +#: templates/js/translated/return_order.js:475 +#: templates/js/translated/return_order.js:668 +#: templates/js/translated/sales_order.js:2119 msgid "Edit Line Item" msgstr "" -#: templates/js/translated/purchase_order.js:1943 -#: templates/js/translated/return_order.js:682 -#: templates/js/translated/sales_order.js:2094 +#: templates/js/translated/purchase_order.js:1942 +#: templates/js/translated/return_order.js:681 +#: templates/js/translated/sales_order.js:2130 msgid "Delete Line Item" msgstr "" -#: templates/js/translated/purchase_order.js:2225 -#: templates/js/translated/sales_order.js:2024 +#: templates/js/translated/purchase_order.js:2224 +#: templates/js/translated/sales_order.js:2060 msgid "Duplicate line item" msgstr "" -#: templates/js/translated/purchase_order.js:2226 -#: templates/js/translated/return_order.js:801 -#: templates/js/translated/sales_order.js:2025 +#: templates/js/translated/purchase_order.js:2225 +#: templates/js/translated/return_order.js:800 +#: templates/js/translated/sales_order.js:2061 msgid "Edit line item" msgstr "" -#: templates/js/translated/purchase_order.js:2227 -#: templates/js/translated/return_order.js:805 -#: templates/js/translated/sales_order.js:2031 +#: templates/js/translated/purchase_order.js:2226 +#: templates/js/translated/return_order.js:804 +#: templates/js/translated/sales_order.js:2067 msgid "Delete line item" msgstr "" -#: templates/js/translated/report.js:63 -msgid "items selected" +#: templates/js/translated/report.js:49 +msgid "Print Report" msgstr "" -#: templates/js/translated/report.js:71 -msgid "Select Report Template" +#: templates/js/translated/report.js:68 +msgid "Report print successful" 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" +#: templates/js/translated/report.js:73 +msgid "Report printing failed" msgstr "" #: templates/js/translated/return_order.js:60 @@ -12916,25 +12995,25 @@ msgstr "" msgid "Complete Return Order" msgstr "" -#: templates/js/translated/return_order.js:266 +#: templates/js/translated/return_order.js:265 msgid "No return orders found" msgstr "" -#: templates/js/translated/return_order.js:300 -#: templates/js/translated/sales_order.js:788 +#: templates/js/translated/return_order.js:299 +#: templates/js/translated/sales_order.js:824 msgid "Invalid Customer" msgstr "" -#: templates/js/translated/return_order.js:562 +#: templates/js/translated/return_order.js:561 msgid "Receive Return Order Items" msgstr "" -#: templates/js/translated/return_order.js:693 -#: templates/js/translated/sales_order.js:2231 +#: templates/js/translated/return_order.js:692 +#: templates/js/translated/sales_order.js:2267 msgid "No matching line items" msgstr "" -#: templates/js/translated/return_order.js:798 +#: templates/js/translated/return_order.js:797 msgid "Mark item as received" msgstr "" @@ -12978,140 +13057,156 @@ msgstr "" msgid "Skip" msgstr "" +#: templates/js/translated/sales_order.js:484 +msgid "Ship Sales Order" +msgstr "" + +#: templates/js/translated/sales_order.js:500 +msgid "Ship this order?" +msgstr "" + +#: templates/js/translated/sales_order.js:506 +msgid "Order cannot be shipped as there are incomplete shipments" +msgstr "" + #: templates/js/translated/sales_order.js:513 msgid "This order has line items which have not been completed." msgstr "" -#: templates/js/translated/sales_order.js:535 +#: templates/js/translated/sales_order.js:514 +msgid "Shipping this order means that the order and line items will no longer be editable." +msgstr "" + +#: templates/js/translated/sales_order.js:572 msgid "Issue this Sales Order?" msgstr "" -#: templates/js/translated/sales_order.js:540 +#: templates/js/translated/sales_order.js:577 msgid "Issue Sales Order" msgstr "" -#: templates/js/translated/sales_order.js:559 +#: templates/js/translated/sales_order.js:596 msgid "Cancel Sales Order" msgstr "" -#: templates/js/translated/sales_order.js:564 +#: templates/js/translated/sales_order.js:601 msgid "Cancelling this order means that the order will no longer be editable." msgstr "" -#: templates/js/translated/sales_order.js:618 +#: templates/js/translated/sales_order.js:655 msgid "Create New Shipment" msgstr "" -#: templates/js/translated/sales_order.js:728 +#: templates/js/translated/sales_order.js:764 msgid "No sales orders found" msgstr "" -#: templates/js/translated/sales_order.js:908 +#: templates/js/translated/sales_order.js:944 msgid "Edit shipment" msgstr "" -#: templates/js/translated/sales_order.js:911 +#: templates/js/translated/sales_order.js:947 msgid "Complete shipment" msgstr "" -#: templates/js/translated/sales_order.js:916 +#: templates/js/translated/sales_order.js:952 msgid "Delete shipment" msgstr "" -#: templates/js/translated/sales_order.js:933 +#: templates/js/translated/sales_order.js:969 msgid "Edit Shipment" msgstr "" -#: templates/js/translated/sales_order.js:948 +#: templates/js/translated/sales_order.js:984 msgid "Delete Shipment" msgstr "" -#: templates/js/translated/sales_order.js:981 +#: templates/js/translated/sales_order.js:1017 msgid "No matching shipments found" msgstr "" -#: templates/js/translated/sales_order.js:1006 +#: templates/js/translated/sales_order.js:1042 msgid "Shipment Reference" msgstr "" -#: templates/js/translated/sales_order.js:1030 -#: templates/js/translated/sales_order.js:1529 +#: templates/js/translated/sales_order.js:1066 +#: templates/js/translated/sales_order.js:1565 msgid "Not shipped" msgstr "" -#: templates/js/translated/sales_order.js:1048 +#: templates/js/translated/sales_order.js:1084 msgid "Tracking" msgstr "" -#: templates/js/translated/sales_order.js:1052 +#: templates/js/translated/sales_order.js:1088 msgid "Invoice" msgstr "" -#: templates/js/translated/sales_order.js:1219 +#: templates/js/translated/sales_order.js:1255 msgid "Add Shipment" msgstr "" -#: templates/js/translated/sales_order.js:1270 +#: templates/js/translated/sales_order.js:1306 msgid "Confirm stock allocation" msgstr "" -#: templates/js/translated/sales_order.js:1271 +#: templates/js/translated/sales_order.js:1307 msgid "Allocate Stock Items to Sales Order" msgstr "" -#: templates/js/translated/sales_order.js:1477 +#: templates/js/translated/sales_order.js:1513 msgid "No sales order allocations found" msgstr "" -#: templates/js/translated/sales_order.js:1569 +#: templates/js/translated/sales_order.js:1605 msgid "Edit Stock Allocation" msgstr "" -#: templates/js/translated/sales_order.js:1583 +#: templates/js/translated/sales_order.js:1619 msgid "Confirm Delete Operation" msgstr "" -#: templates/js/translated/sales_order.js:1584 +#: templates/js/translated/sales_order.js:1620 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 +#: templates/js/translated/sales_order.js:1659 +#: templates/js/translated/sales_order.js:1746 +#: templates/js/translated/stock.js:1776 msgid "Shipped to customer" msgstr "" -#: templates/js/translated/sales_order.js:1631 -#: templates/js/translated/sales_order.js:1719 +#: templates/js/translated/sales_order.js:1667 +#: templates/js/translated/sales_order.js:1755 msgid "Stock location not specified" msgstr "" -#: templates/js/translated/sales_order.js:2008 +#: templates/js/translated/sales_order.js:2044 msgid "Allocate serial numbers" msgstr "" -#: templates/js/translated/sales_order.js:2012 +#: templates/js/translated/sales_order.js:2048 msgid "Purchase stock" msgstr "" -#: templates/js/translated/sales_order.js:2021 -#: templates/js/translated/sales_order.js:2209 +#: templates/js/translated/sales_order.js:2057 +#: templates/js/translated/sales_order.js:2245 msgid "Calculate price" msgstr "" -#: templates/js/translated/sales_order.js:2035 +#: templates/js/translated/sales_order.js:2071 msgid "Cannot be deleted as items have been shipped" msgstr "" -#: templates/js/translated/sales_order.js:2038 +#: templates/js/translated/sales_order.js:2074 msgid "Cannot be deleted as items have been allocated" msgstr "" -#: templates/js/translated/sales_order.js:2109 +#: templates/js/translated/sales_order.js:2145 msgid "Allocate Serial Numbers" msgstr "" -#: templates/js/translated/sales_order.js:2217 +#: templates/js/translated/sales_order.js:2253 msgid "Update Unit Price" msgstr "" @@ -13319,7 +13414,7 @@ msgstr "" msgid "Add Stock" msgstr "" -#: templates/js/translated/stock.js:1042 users/models.py:414 +#: templates/js/translated/stock.js:1042 users/models.py:401 msgid "Add" msgstr "" @@ -13327,180 +13422,180 @@ msgstr "" msgid "Delete Stock" msgstr "" -#: templates/js/translated/stock.js:1143 +#: templates/js/translated/stock.js:1146 msgid "Quantity cannot be adjusted for serialized stock" msgstr "" -#: templates/js/translated/stock.js:1143 +#: templates/js/translated/stock.js:1146 msgid "Specify stock quantity" msgstr "" -#: templates/js/translated/stock.js:1177 templates/js/translated/stock.js:3299 +#: templates/js/translated/stock.js:1180 templates/js/translated/stock.js:3299 msgid "Select Stock Items" msgstr "" -#: templates/js/translated/stock.js:1178 +#: templates/js/translated/stock.js:1181 msgid "Select at least one available stock item" msgstr "" -#: templates/js/translated/stock.js:1224 +#: templates/js/translated/stock.js:1227 msgid "Confirm stock adjustment" msgstr "" -#: templates/js/translated/stock.js:1360 +#: templates/js/translated/stock.js:1363 msgid "PASS" msgstr "" -#: templates/js/translated/stock.js:1362 +#: templates/js/translated/stock.js:1365 msgid "FAIL" msgstr "" -#: templates/js/translated/stock.js:1367 +#: templates/js/translated/stock.js:1370 msgid "NO RESULT" msgstr "" -#: templates/js/translated/stock.js:1447 +#: templates/js/translated/stock.js:1450 msgid "Pass test" msgstr "" -#: templates/js/translated/stock.js:1450 +#: templates/js/translated/stock.js:1453 msgid "Add test result" msgstr "" -#: templates/js/translated/stock.js:1473 +#: templates/js/translated/stock.js:1476 msgid "No test results found" msgstr "" -#: templates/js/translated/stock.js:1537 +#: templates/js/translated/stock.js:1540 msgid "Test Date" msgstr "" -#: templates/js/translated/stock.js:1550 +#: templates/js/translated/stock.js:1553 msgid "Test started" msgstr "" -#: templates/js/translated/stock.js:1559 +#: templates/js/translated/stock.js:1562 msgid "Test finished" msgstr "" -#: templates/js/translated/stock.js:1713 +#: templates/js/translated/stock.js:1716 msgid "Edit Test Result" msgstr "" -#: templates/js/translated/stock.js:1733 +#: templates/js/translated/stock.js:1736 msgid "Delete Test Result" msgstr "" -#: templates/js/translated/stock.js:1765 +#: templates/js/translated/stock.js:1768 msgid "In production" msgstr "" -#: templates/js/translated/stock.js:1769 +#: templates/js/translated/stock.js:1772 msgid "Installed in Stock Item" msgstr "" -#: templates/js/translated/stock.js:1777 +#: templates/js/translated/stock.js:1780 msgid "Assigned to Sales Order" msgstr "" -#: templates/js/translated/stock.js:1783 +#: templates/js/translated/stock.js:1786 msgid "No stock location set" msgstr "" -#: templates/js/translated/stock.js:1839 +#: templates/js/translated/stock.js:1842 msgid "Change stock status" msgstr "" -#: templates/js/translated/stock.js:1848 +#: templates/js/translated/stock.js:1851 msgid "Merge stock" msgstr "" -#: templates/js/translated/stock.js:1897 +#: templates/js/translated/stock.js:1900 msgid "Delete stock" msgstr "" -#: templates/js/translated/stock.js:1952 +#: templates/js/translated/stock.js:1953 msgid "stock items" msgstr "" -#: templates/js/translated/stock.js:1957 +#: templates/js/translated/stock.js:1958 msgid "Scan to location" msgstr "" -#: templates/js/translated/stock.js:1968 +#: templates/js/translated/stock.js:1969 msgid "Stock Actions" msgstr "" -#: templates/js/translated/stock.js:2012 +#: templates/js/translated/stock.js:2013 msgid "Load installed items" msgstr "" -#: templates/js/translated/stock.js:2090 +#: templates/js/translated/stock.js:2091 msgid "Stock item is in production" msgstr "" -#: templates/js/translated/stock.js:2095 +#: templates/js/translated/stock.js:2096 msgid "Stock item assigned to sales order" msgstr "" -#: templates/js/translated/stock.js:2098 +#: templates/js/translated/stock.js:2099 msgid "Stock item assigned to customer" msgstr "" -#: templates/js/translated/stock.js:2101 +#: templates/js/translated/stock.js:2102 msgid "Serialized stock item has been allocated" msgstr "" -#: templates/js/translated/stock.js:2103 +#: templates/js/translated/stock.js:2104 msgid "Stock item has been fully allocated" msgstr "" -#: templates/js/translated/stock.js:2105 +#: templates/js/translated/stock.js:2106 msgid "Stock item has been partially allocated" msgstr "" -#: templates/js/translated/stock.js:2108 +#: templates/js/translated/stock.js:2109 msgid "Stock item has been installed in another item" msgstr "" -#: templates/js/translated/stock.js:2110 +#: templates/js/translated/stock.js:2111 msgid "Stock item has been consumed by a build order" msgstr "" -#: templates/js/translated/stock.js:2114 +#: templates/js/translated/stock.js:2115 msgid "Stock item has expired" msgstr "" -#: templates/js/translated/stock.js:2116 +#: templates/js/translated/stock.js:2117 msgid "Stock item will expire soon" msgstr "" -#: templates/js/translated/stock.js:2121 +#: templates/js/translated/stock.js:2122 msgid "Stock item has been rejected" msgstr "" -#: templates/js/translated/stock.js:2123 +#: templates/js/translated/stock.js:2124 msgid "Stock item is lost" msgstr "" -#: templates/js/translated/stock.js:2125 +#: templates/js/translated/stock.js:2126 msgid "Stock item is destroyed" msgstr "" -#: templates/js/translated/stock.js:2129 +#: templates/js/translated/stock.js:2130 #: templates/js/translated/table_filters.js:350 msgid "Depleted" msgstr "" -#: templates/js/translated/stock.js:2294 +#: templates/js/translated/stock.js:2295 msgid "Supplier part not specified" msgstr "" -#: templates/js/translated/stock.js:2341 +#: templates/js/translated/stock.js:2342 msgid "Stock Value" msgstr "" -#: templates/js/translated/stock.js:2469 +#: templates/js/translated/stock.js:2470 msgid "No stock items matching query" msgstr "" @@ -13973,6 +14068,22 @@ msgstr "" msgid "Show all notifications and history" msgstr "" +#: templates/pui_banner.html:9 +msgid "Platform UI - the new UI for InvenTree - provides more modern administration options." +msgstr "" + +#: templates/pui_banner.html:12 +msgid "Platform UI - the new UI for InvenTree - is ready to be tested." +msgstr "" + +#: templates/pui_banner.html:15 +msgid "Try it out now" +msgstr "" + +#: templates/pui_banner.html:15 +msgid "here" +msgstr "" + #: templates/qr_code.html:11 msgid "QR data not provided" msgstr "" @@ -14194,35 +14305,34 @@ msgstr "" msgid "Revoked" msgstr "" -#: users/models.py:397 +#: users/models.py:384 msgid "Permission set" msgstr "" -#: users/models.py:406 +#: users/models.py:393 msgid "Group" msgstr "" -#: users/models.py:410 +#: users/models.py:397 msgid "View" msgstr "" -#: users/models.py:410 +#: users/models.py:397 msgid "Permission to view items" msgstr "" -#: users/models.py:414 +#: users/models.py:401 msgid "Permission to add items" msgstr "" -#: users/models.py:418 +#: users/models.py:405 msgid "Change" msgstr "" -#: users/models.py:420 +#: users/models.py:407 msgid "Permissions to edit items" msgstr "" -#: users/models.py:426 +#: users/models.py:413 msgid "Permission to delete items" msgstr "" - diff --git a/src/backend/InvenTree/locale/de/LC_MESSAGES/django.po b/src/backend/InvenTree/locale/de/LC_MESSAGES/django.po index 8eca26f95c..489cd55ac6 100644 --- a/src/backend/InvenTree/locale/de/LC_MESSAGES/django.po +++ b/src/backend/InvenTree/locale/de/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-04-20 13:19+0000\n" -"PO-Revision-Date: 2024-04-21 04:19\n" +"POT-Creation-Date: 2024-05-31 07:08+0000\n" +"PO-Revision-Date: 2024-05-27 11:54\n" "Last-Translator: \n" "Language-Team: German\n" "Language: de_DE\n" @@ -17,11 +17,11 @@ msgstr "" "X-Crowdin-File: /[inventree.InvenTree] l10/src/backend/InvenTree/locale/en/LC_MESSAGES/django.po\n" "X-Crowdin-File-ID: 216\n" -#: InvenTree/api.py:255 +#: InvenTree/api.py:272 msgid "API endpoint not found" msgstr "API-Endpunkt nicht gefunden" -#: InvenTree/api.py:519 +#: InvenTree/api.py:536 msgid "User does not have permission to view this model" msgstr "Benutzer hat keine Berechtigung, dieses Modell anzuzeigen" @@ -56,26 +56,26 @@ msgstr "Fehlerdetails finden Sie im Admin-Panel" msgid "Enter date" msgstr "Datum eingeben" -#: InvenTree/fields.py:208 InvenTree/models.py:1021 build/serializers.py:438 -#: build/serializers.py:516 build/templates/build/sidebar.html:21 -#: company/models.py:847 company/templates/company/sidebar.html:37 -#: order/models.py:1283 order/templates/order/po_sidebar.html:11 +#: InvenTree/fields.py:208 InvenTree/models.py:1035 build/serializers.py:453 +#: build/serializers.py:531 build/templates/build/sidebar.html:21 +#: company/models.py:849 company/templates/company/sidebar.html:37 +#: order/models.py:1332 order/templates/order/po_sidebar.html:11 #: order/templates/order/return_order_sidebar.html:9 #: order/templates/order/so_sidebar.html:17 part/admin.py:59 -#: part/models.py:3175 part/templates/part/part_sidebar.html:63 -#: report/templates/report/inventree_build_order_base.html:172 -#: stock/admin.py:226 stock/models.py:2332 stock/models.py:2449 -#: 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 +#: part/models.py:3218 part/templates/part/part_sidebar.html:63 +#: report/templates/report/inventree_build_order_report.html:172 +#: stock/admin.py:226 stock/models.py:2325 stock/models.py:2442 +#: stock/serializers.py:630 stock/serializers.py:788 stock/serializers.py:884 +#: stock/serializers.py:934 stock/serializers.py:1243 stock/serializers.py:1332 +#: stock/serializers.py:1497 stock/templates/stock/stock_sidebar.html:25 #: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1265 #: templates/js/translated/company.js:1684 templates/js/translated/order.js:347 #: templates/js/translated/part.js:1080 -#: templates/js/translated/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 +#: templates/js/translated/purchase_order.js:2200 +#: templates/js/translated/return_order.js:775 +#: templates/js/translated/sales_order.js:1103 +#: templates/js/translated/sales_order.js:2018 +#: templates/js/translated/stock.js:1536 templates/js/translated/stock.js:2428 msgid "Notes" msgstr "Notizen" @@ -132,7 +132,7 @@ msgstr "Die angegebene E-Mail-Domain ist nicht freigegeben." msgid "Registration is disabled." msgstr "Registrierung ist deaktiviert." -#: InvenTree/helpers.py:525 order/models.py:541 order/models.py:743 +#: InvenTree/helpers.py:525 order/models.py:562 order/models.py:764 msgid "Invalid quantity provided" msgstr "Keine gültige Menge" @@ -253,7 +253,7 @@ msgstr "Hebräisch" #: InvenTree/locales.py:30 msgid "Hindi" -msgstr "" +msgstr "Hinduistisch" #: InvenTree/locales.py:31 msgid "Hungarian" @@ -324,14 +324,18 @@ msgid "Turkish" msgstr "Türkisch" #: InvenTree/locales.py:48 +msgid "Ukrainian" +msgstr "Ukrainisch" + +#: InvenTree/locales.py:49 msgid "Vietnamese" msgstr "Vietnamesisch" -#: InvenTree/locales.py:49 +#: InvenTree/locales.py:50 msgid "Chinese (Simplified)" msgstr "Chinesisch (Vereinfacht)" -#: InvenTree/locales.py:50 +#: InvenTree/locales.py:51 msgid "Chinese (Traditional)" msgstr "Chinesisch (Traditionell)" @@ -345,151 +349,151 @@ msgstr "[{site_name}] In App einloggen" #: templates/InvenTree/settings/user.html:49 #: templates/js/translated/company.js:677 msgid "Email" -msgstr "" +msgstr "Email" #: InvenTree/models.py:107 msgid "Error running plugin validation" msgstr "Fehler beim Ausführen der Plugin Validierung" -#: InvenTree/models.py:162 +#: InvenTree/models.py:176 msgid "Metadata must be a python dict object" msgstr "Metadaten müssen ein Python-Dict Objekt sein" -#: InvenTree/models.py:168 +#: InvenTree/models.py:182 msgid "Plugin Metadata" msgstr "Plugin Metadaten" -#: InvenTree/models.py:169 +#: InvenTree/models.py:183 msgid "JSON metadata field, for use by external plugins" msgstr "JSON-Metadatenfeld, für die Verwendung durch externe Plugins" -#: InvenTree/models.py:399 +#: InvenTree/models.py:413 msgid "Improperly formatted pattern" msgstr "Falsch formatiertes Muster" -#: InvenTree/models.py:406 +#: InvenTree/models.py:420 msgid "Unknown format key specified" msgstr "Unbekannter Formatschlüssel angegeben" -#: InvenTree/models.py:412 +#: InvenTree/models.py:426 msgid "Missing required format key" msgstr "Erforderlicher Formatschlüssel fehlt" -#: InvenTree/models.py:423 +#: InvenTree/models.py:437 msgid "Reference field cannot be empty" msgstr "Referenz-Feld darf nicht leer sein" -#: InvenTree/models.py:431 +#: InvenTree/models.py:445 msgid "Reference must match required pattern" msgstr "Referenz muss erforderlichem Muster entsprechen" -#: InvenTree/models.py:462 +#: InvenTree/models.py:476 msgid "Reference number is too large" msgstr "Referenznummer ist zu groß" -#: InvenTree/models.py:536 +#: InvenTree/models.py:550 msgid "Missing file" msgstr "Fehlende Datei" -#: InvenTree/models.py:537 +#: InvenTree/models.py:551 msgid "Missing external link" msgstr "Fehlender externer Link" -#: InvenTree/models.py:558 stock/models.py:2444 +#: InvenTree/models.py:572 stock/models.py:2437 #: templates/js/translated/attachment.js:119 #: templates/js/translated/attachment.js:326 msgid "Attachment" msgstr "Anhang" -#: InvenTree/models.py:559 +#: InvenTree/models.py:573 msgid "Select file to attach" msgstr "Datei zum Anhängen auswählen" -#: InvenTree/models.py:567 common/models.py:3018 company/models.py:146 -#: company/models.py:457 company/models.py:514 company/models.py:830 -#: order/models.py:291 order/models.py:1288 order/models.py:1702 -#: part/admin.py:55 part/models.py:919 +#: InvenTree/models.py:581 common/models.py:3041 company/models.py:146 +#: company/models.py:457 company/models.py:514 company/models.py:831 +#: order/models.py:303 order/models.py:1337 order/models.py:1753 +#: part/admin.py:55 part/models.py:962 #: part/templates/part/part_scheduling.html:11 -#: report/templates/report/inventree_build_order_base.html:164 +#: report/templates/report/inventree_build_order_report.html:164 #: stock/admin.py:225 templates/js/translated/company.js:1319 #: templates/js/translated/company.js:1673 templates/js/translated/order.js:351 -#: templates/js/translated/part.js: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 +#: templates/js/translated/part.js:2455 +#: templates/js/translated/purchase_order.js:2040 +#: templates/js/translated/purchase_order.js:2204 +#: templates/js/translated/return_order.js:779 +#: templates/js/translated/sales_order.js:1092 +#: templates/js/translated/sales_order.js:2023 msgid "Link" -msgstr "" +msgstr "Link" -#: InvenTree/models.py:568 build/models.py:315 part/models.py:920 -#: stock/models.py:819 +#: InvenTree/models.py:582 build/models.py:345 part/models.py:963 +#: stock/models.py:836 msgid "Link to external URL" msgstr "Link zu einer externen URL" -#: InvenTree/models.py:574 templates/js/translated/attachment.js:120 +#: InvenTree/models.py:588 templates/js/translated/attachment.js:120 #: templates/js/translated/attachment.js:341 msgid "Comment" msgstr "Kommentar" -#: InvenTree/models.py:575 +#: InvenTree/models.py:589 msgid "File comment" msgstr "Datei-Kommentar" -#: InvenTree/models.py:583 InvenTree/models.py:584 common/models.py:2494 -#: common/models.py:2495 common/models.py:2719 common/models.py:2720 -#: common/models.py:2965 common/models.py:2966 part/models.py:3185 -#: part/models.py:3272 part/models.py:3365 part/models.py:3393 -#: plugin/models.py:250 plugin/models.py:251 -#: report/templates/report/inventree_test_report_base.html:105 +#: InvenTree/models.py:597 InvenTree/models.py:598 common/models.py:2517 +#: common/models.py:2518 common/models.py:2742 common/models.py:2743 +#: common/models.py:2988 common/models.py:2989 part/models.py:3228 +#: part/models.py:3315 part/models.py:3408 part/models.py:3436 +#: plugin/models.py:259 plugin/models.py:260 +#: report/templates/report/inventree_test_report.html:105 #: templates/js/translated/stock.js:3036 users/models.py:111 msgid "User" msgstr "Benutzer" -#: InvenTree/models.py:588 +#: InvenTree/models.py:602 msgid "upload date" msgstr "Hochladedatum" -#: InvenTree/models.py:610 +#: InvenTree/models.py:624 msgid "Filename must not be empty" msgstr "Dateiname darf nicht leer sein" -#: InvenTree/models.py:621 +#: InvenTree/models.py:635 msgid "Invalid attachment directory" msgstr "Ungültiges Verzeichnis für Anhang" -#: InvenTree/models.py:651 +#: InvenTree/models.py:665 #, python-brace-format msgid "Filename contains illegal character '{c}'" msgstr "Dateiname enthält ungültiges Zeichen '{c}'" -#: InvenTree/models.py:654 +#: InvenTree/models.py:668 msgid "Filename missing extension" msgstr "Dateiendung fehlt" -#: InvenTree/models.py:663 +#: InvenTree/models.py:677 msgid "Attachment with this filename already exists" msgstr "Anhang mit diesem Dateinamen bereits vorhanden" -#: InvenTree/models.py:670 +#: InvenTree/models.py:684 msgid "Error renaming file" msgstr "Fehler beim Umbenennen" -#: InvenTree/models.py:846 +#: InvenTree/models.py:860 msgid "Duplicate names cannot exist under the same parent" msgstr "Doppelte Namen können nicht unter dem selben Elternteil existieren" -#: InvenTree/models.py:863 +#: InvenTree/models.py:877 msgid "Invalid choice" msgstr "Ungültige Auswahl" -#: InvenTree/models.py:893 common/models.py:2706 common/models.py:3104 -#: common/serializers.py:370 company/models.py:613 label/models.py:120 -#: machine/models.py:24 part/models.py:855 part/models.py:3616 -#: plugin/models.py:41 report/models.py:176 stock/models.py:76 +#: InvenTree/models.py:907 common/models.py:2729 common/models.py:3127 +#: common/serializers.py:403 company/models.py:614 machine/models.py:24 +#: part/models.py:898 part/models.py:3659 plugin/models.py:50 +#: report/models.py:149 stock/models.py:72 #: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/notifications.html:17 -#: templates/InvenTree/settings/plugin.html:81 +#: templates/InvenTree/settings/plugin.html:83 #: templates/InvenTree/settings/plugin_settings.html:22 #: templates/InvenTree/settings/settings_staff_js.html:67 #: templates/InvenTree/settings/settings_staff_js.html:446 @@ -499,98 +503,98 @@ msgstr "Ungültige Auswahl" #: templates/js/translated/company.js:1165 #: templates/js/translated/company.js:1413 templates/js/translated/part.js:1186 #: templates/js/translated/part.js:1474 templates/js/translated/part.js:1610 -#: templates/js/translated/part.js:2749 templates/js/translated/stock.js:2716 +#: templates/js/translated/part.js:2748 templates/js/translated/stock.js:2716 msgid "Name" -msgstr "" +msgstr "Name" -#: InvenTree/models.py:899 build/models.py:188 +#: InvenTree/models.py:913 build/models.py:218 #: build/templates/build/detail.html:24 common/models.py:136 -#: company/models.py:522 company/models.py:838 +#: company/models.py:523 company/models.py:840 #: company/templates/company/company_base.html:77 #: company/templates/company/manufacturer_part.html:75 -#: company/templates/company/supplier_part.html:107 label/models.py:127 -#: order/models.py:277 order/models.py:1316 part/admin.py:303 part/admin.py:414 -#: part/models.py:878 part/models.py:3631 part/templates/part/category.html:82 +#: company/templates/company/supplier_part.html:107 order/models.py:289 +#: order/models.py:1365 part/admin.py:305 part/admin.py:416 part/models.py:921 +#: part/models.py:3674 part/templates/part/category.html:82 #: part/templates/part/part_base.html:170 -#: part/templates/part/part_scheduling.html:12 report/models.py:189 -#: report/models.py:655 report/models.py:729 -#: report/templates/report/inventree_build_order_base.html:117 -#: stock/admin.py:55 stock/models.py:82 stock/templates/stock/location.html:125 +#: part/templates/part/part_scheduling.html:12 report/models.py:155 +#: report/models.py:509 report/models.py:535 +#: report/templates/report/inventree_build_order_report.html:117 +#: stock/admin.py:55 stock/models.py:78 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:519 +#: templates/js/translated/build.js:2139 templates/js/translated/company.js:519 #: templates/js/translated/company.js:1330 #: templates/js/translated/company.js:1641 templates/js/translated/index.js:119 #: templates/js/translated/order.js:298 templates/js/translated/part.js:1238 #: templates/js/translated/part.js:1483 templates/js/translated/part.js:1621 -#: templates/js/translated/part.js:1958 templates/js/translated/part.js:2355 -#: templates/js/translated/part.js:2785 templates/js/translated/part.js:2896 +#: templates/js/translated/part.js:1958 templates/js/translated/part.js:2354 +#: templates/js/translated/part.js:2784 templates/js/translated/part.js:2895 #: templates/js/translated/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/purchase_order.js:1706 +#: templates/js/translated/purchase_order.js:1849 +#: templates/js/translated/purchase_order.js:2022 +#: templates/js/translated/return_order.js:313 +#: templates/js/translated/sales_order.js:838 +#: templates/js/translated/sales_order.js:1848 +#: templates/js/translated/stock.js:1515 templates/js/translated/stock.js:2058 #: templates/js/translated/stock.js:2748 templates/js/translated/stock.js:2831 msgid "Description" msgstr "Beschreibung" -#: InvenTree/models.py:900 stock/models.py:83 +#: InvenTree/models.py:914 stock/models.py:79 msgid "Description (optional)" msgstr "Beschreibung (optional)" -#: InvenTree/models.py:909 +#: InvenTree/models.py:923 msgid "parent" msgstr "Eltern" -#: InvenTree/models.py:915 templates/js/translated/part.js:2794 +#: InvenTree/models.py:929 templates/js/translated/part.js:2793 #: templates/js/translated/stock.js:2757 msgid "Path" msgstr "Pfad" -#: InvenTree/models.py:1021 +#: InvenTree/models.py:1035 msgid "Markdown notes (optional)" msgstr "Markdown Notizen (optional)" -#: InvenTree/models.py:1050 +#: InvenTree/models.py:1064 msgid "Barcode Data" msgstr "Barcode-Daten" -#: InvenTree/models.py:1051 +#: InvenTree/models.py:1065 msgid "Third party barcode data" msgstr "Drittanbieter-Barcode-Daten" -#: InvenTree/models.py:1057 +#: InvenTree/models.py:1071 msgid "Barcode Hash" msgstr "Barcode-Hash" -#: InvenTree/models.py:1058 +#: InvenTree/models.py:1072 msgid "Unique hash of barcode data" msgstr "Eindeutiger Hash der Barcode-Daten" -#: InvenTree/models.py:1111 +#: InvenTree/models.py:1125 msgid "Existing barcode found" msgstr "Bestehender Barcode gefunden" -#: InvenTree/models.py:1154 +#: InvenTree/models.py:1168 msgid "Server Error" msgstr "Serverfehler" -#: InvenTree/models.py:1155 +#: InvenTree/models.py:1169 msgid "An error has been logged by the server." msgstr "Ein Fehler wurde vom Server protokolliert." -#: InvenTree/serializers.py:62 part/models.py:4169 +#: InvenTree/serializers.py:62 part/models.py:4212 msgid "Must be a valid number" msgstr "Muss eine gültige Nummer sein" #: InvenTree/serializers.py:99 company/models.py:183 -#: company/templates/company/company_base.html:112 part/models.py:2993 +#: company/templates/company/company_base.html:112 part/models.py:3036 #: templates/InvenTree/settings/settings_staff_js.html:44 #: templates/currency_data.html:5 msgid "Currency" @@ -682,7 +686,7 @@ msgstr "URL der Remote-Bilddatei" 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:1161 +#: InvenTree/status.py:66 part/serializers.py:1178 msgid "Background worker check failed" msgstr "Hintergrund-Prozess-Kontrolle fehlgeschlagen" @@ -694,202 +698,6 @@ msgstr "E-Mail-Backend nicht konfiguriert" msgid "InvenTree system health checks failed" msgstr "InvenTree Status-Überprüfung fehlgeschlagen" -#: 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 "Ausstehend" - -#: InvenTree/status_codes.py:13 generic/states/tests.py:18 -msgid "Placed" -msgstr "Platziert" - -#: 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 "Fertig" - -#: InvenTree/status_codes.py:15 InvenTree/status_codes.py:44 -#: InvenTree/status_codes.py:150 InvenTree/status_codes.py:170 -msgid "Cancelled" -msgstr "Storniert" - -#: InvenTree/status_codes.py:16 InvenTree/status_codes.py:45 -#: InvenTree/status_codes.py:67 -msgid "Lost" -msgstr "Verloren" - -#: InvenTree/status_codes.py:17 InvenTree/status_codes.py:46 -#: InvenTree/status_codes.py:73 -msgid "Returned" -msgstr "Zurückgegeben" - -#: InvenTree/status_codes.py:40 InvenTree/status_codes.py:167 -msgid "In Progress" -msgstr "In Bearbeitung" - -#: InvenTree/status_codes.py:43 order/models.py:1564 -#: templates/js/translated/sales_order.js:1523 -#: templates/js/translated/sales_order.js:1644 -#: templates/js/translated/sales_order.js:1957 -msgid "Shipped" -msgstr "Versendet" - -#: InvenTree/status_codes.py:62 -msgid "OK" -msgstr "" - -#: InvenTree/status_codes.py:63 -msgid "Attention needed" -msgstr "erfordert Eingriff" - -#: InvenTree/status_codes.py:64 -msgid "Damaged" -msgstr "Beschädigt" - -#: InvenTree/status_codes.py:65 -msgid "Destroyed" -msgstr "Zerstört" - -#: InvenTree/status_codes.py:66 -msgid "Rejected" -msgstr "Zurückgewiesen" - -#: InvenTree/status_codes.py:70 -msgid "Quarantined" -msgstr "In Quarantäne" - -#: InvenTree/status_codes.py:91 -msgid "Legacy stock tracking entry" -msgstr "Alter Bestand-Verfolgungs-Eintrag" - -#: InvenTree/status_codes.py:93 templates/js/translated/stock.js:544 -msgid "Stock item created" -msgstr "Lagerartikel erstellt" - -#: InvenTree/status_codes.py:96 -msgid "Edited stock item" -msgstr "Lagerartikel bearbeitet" - -#: InvenTree/status_codes.py:97 -msgid "Assigned serial number" -msgstr "Seriennummer hinzugefügt" - -#: InvenTree/status_codes.py:100 -msgid "Stock counted" -msgstr "Bestand gezählt" - -#: InvenTree/status_codes.py:101 -msgid "Stock manually added" -msgstr "Bestand manuell hinzugefügt" - -#: InvenTree/status_codes.py:102 -msgid "Stock manually removed" -msgstr "Bestand manuell entfernt" - -#: InvenTree/status_codes.py:105 -msgid "Location changed" -msgstr "Standort geändert" - -#: InvenTree/status_codes.py:106 -msgid "Stock updated" -msgstr "Lagerbestand aktualisiert" - -#: InvenTree/status_codes.py:109 -msgid "Installed into assembly" -msgstr "In Baugruppe installiert" - -#: InvenTree/status_codes.py:110 -msgid "Removed from assembly" -msgstr "Aus Baugruppe entfernt" - -#: InvenTree/status_codes.py:112 -msgid "Installed component item" -msgstr "Komponente installiert" - -#: InvenTree/status_codes.py:113 -msgid "Removed component item" -msgstr "Komponente entfernt" - -#: InvenTree/status_codes.py:116 -msgid "Split from parent item" -msgstr "Vom übergeordneten Element geteilt" - -#: InvenTree/status_codes.py:117 -msgid "Split child item" -msgstr "Unterobjekt geteilt" - -#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:1855 -msgid "Merged stock items" -msgstr "Lagerartikel zusammengeführt" - -#: InvenTree/status_codes.py:123 -msgid "Converted to variant" -msgstr "In Variante umgewandelt" - -#: InvenTree/status_codes.py:126 -msgid "Build order output created" -msgstr "Endprodukt erstellt" - -#: InvenTree/status_codes.py:127 -msgid "Build order output completed" -msgstr "Endprodukt fertiggestellt" - -#: InvenTree/status_codes.py:128 -msgid "Build order output rejected" -msgstr "Endprodukt abgelehnt" - -#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1761 -msgid "Consumed by build order" -msgstr "Durch Bauauftrag verbraucht" - -#: InvenTree/status_codes.py:132 -msgid "Shipped against Sales Order" -msgstr "Versandt gegen Verkaufsauftrag" - -#: InvenTree/status_codes.py:135 -msgid "Received against Purchase Order" -msgstr "Gegen Bestellung empfangen" - -#: InvenTree/status_codes.py:138 -msgid "Returned against Return Order" -msgstr "Zurückgeschickt gegen Rücksendeauftrag" - -#: InvenTree/status_codes.py:141 templates/js/translated/table_filters.js:375 -msgid "Sent to customer" -msgstr "Zum Kunden geschickt" - -#: InvenTree/status_codes.py:142 -msgid "Returned from customer" -msgstr "Rücksendung vom Kunden" - -#: InvenTree/status_codes.py:149 -msgid "Production" -msgstr "in Arbeit" - -#: InvenTree/status_codes.py:185 -msgid "Return" -msgstr "Zurück" - -#: InvenTree/status_codes.py:188 -msgid "Repair" -msgstr "Reparatur" - -#: InvenTree/status_codes.py:191 -msgid "Replace" -msgstr "Ersetzen" - -#: InvenTree/status_codes.py:194 -msgid "Refund" -msgstr "Rückerstattung" - -#: InvenTree/status_codes.py:197 -msgid "Reject" -msgstr "Ablehnen" - #: InvenTree/templatetags/inventree_extras.py:183 msgid "Unknown database" msgstr "Unbekannte Datenbank" @@ -938,45 +746,45 @@ msgstr "Systeminformationen" msgid "About InvenTree" msgstr "Über InvenTree" -#: build/api.py:238 +#: build/api.py:255 msgid "Build must be cancelled before it can be deleted" msgstr "Bauauftrag muss abgebrochen werden, bevor er gelöscht werden kann" -#: build/api.py:282 part/models.py:4047 templates/js/translated/bom.js:997 -#: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2521 +#: build/api.py:299 part/models.py:4090 templates/js/translated/bom.js:997 +#: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2520 #: templates/js/translated/table_filters.js:190 #: templates/js/translated/table_filters.js:583 msgid "Consumable" msgstr "Verbrauchsmaterial" -#: build/api.py:283 part/models.py:4041 part/templates/part/upload_bom.html:58 +#: build/api.py:300 part/models.py:4084 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/build.js:2529 #: templates/js/translated/table_filters.js:186 #: templates/js/translated/table_filters.js:215 #: templates/js/translated/table_filters.js:587 msgid "Optional" -msgstr "" +msgstr "Optional" -#: build/api.py:284 templates/js/translated/table_filters.js:408 +#: build/api.py:301 templates/js/translated/table_filters.js:408 #: templates/js/translated/table_filters.js:579 msgid "Tracked" msgstr "Nachverfolgt" -#: build/api.py:286 part/admin.py:144 templates/js/translated/build.js:1741 -#: templates/js/translated/build.js:2630 -#: templates/js/translated/sales_order.js:1929 +#: build/api.py:303 part/admin.py:144 templates/js/translated/build.js:1744 +#: templates/js/translated/build.js:2629 +#: templates/js/translated/sales_order.js:1965 #: templates/js/translated/table_filters.js:571 msgid "Allocated" msgstr "Zugeordnet" -#: build/api.py:294 company/models.py:902 company/serializers.py:383 +#: build/api.py:311 company/models.py:904 company/serializers.py:383 #: 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/bom.js:1162 templates/js/translated/build.js:2561 #: templates/js/translated/index.js:123 -#: templates/js/translated/model_renderers.js:228 +#: templates/js/translated/model_renderers.js:234 #: templates/js/translated/part.js:692 templates/js/translated/part.js:694 #: templates/js/translated/part.js:699 #: templates/js/translated/table_filters.js:340 @@ -984,16 +792,16 @@ msgstr "Zugeordnet" msgid "Available" msgstr "Verfügbar" -#: build/models.py:74 build/templates/build/build_base.html:9 +#: build/models.py:83 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 +#: report/templates/report/inventree_build_order_report.html:105 +#: stock/serializers.py:83 templates/email/build_order_completed.html:16 #: templates/email/overdue_build_order.html:15 #: templates/js/translated/build.js:972 templates/js/translated/stock.js:2892 msgid "Build Order" msgstr "Bauauftrag" -#: build/models.py:75 build/templates/build/build_base.html:13 +#: build/models.py:84 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 @@ -1004,708 +812,751 @@ msgstr "Bauauftrag" msgid "Build Orders" msgstr "Bauaufträge" -#: build/models.py:116 +#: build/models.py:131 msgid "Invalid choice for parent build" msgstr "Ungültige Wahl für übergeordneten Bauauftrag" -#: build/models.py:127 order/models.py:239 +#: build/models.py:142 order/models.py:240 msgid "Responsible user or group must be specified" -msgstr "" +msgstr "Verantwortlicher Benutzer oder Gruppe muss angegeben werden" -#: build/models.py:133 +#: build/models.py:148 msgid "Build order part cannot be changed" msgstr "Teil in Bauauftrag kann nicht geändert werden" -#: build/models.py:179 +#: build/models.py:209 msgid "Build Order Reference" msgstr "Bauauftragsreferenz" -#: build/models.py:180 order/models.py:442 order/models.py:898 -#: order/models.py:1276 order/models.py:1996 part/admin.py:417 -#: part/models.py:4062 part/templates/part/upload_bom.html:54 +#: build/models.py:210 order/models.py:463 order/models.py:928 +#: order/models.py:1325 order/models.py:2056 part/admin.py:419 +#: part/models.py:4105 part/templates/part/upload_bom.html:54 #: 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 +#: report/templates/report/inventree_purchase_order_report.html:28 +#: report/templates/report/inventree_return_order_report.html:26 +#: report/templates/report/inventree_sales_order_report.html:28 #: templates/js/translated/bom.js:770 templates/js/translated/bom.js:973 -#: templates/js/translated/build.js:2513 templates/js/translated/order.js:291 +#: templates/js/translated/build.js:2512 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 +#: templates/js/translated/purchase_order.js:2065 +#: templates/js/translated/return_order.js:728 +#: templates/js/translated/sales_order.js:1854 msgid "Reference" msgstr "Referenz" -#: build/models.py:191 +#: build/models.py:221 msgid "Brief description of the build (optional)" msgstr "Kurze Beschreibung des Baus (optional)" -#: build/models.py:199 build/templates/build/build_base.html:183 +#: build/models.py:229 build/templates/build/build_base.html:183 #: build/templates/build/detail.html:87 msgid "Parent Build" msgstr "Eltern-Bauauftrag" -#: build/models.py:200 +#: build/models.py:230 msgid "BuildOrder to which this build is allocated" msgstr "Bauauftrag, zu dem dieser Bauauftrag zugwiesen ist" -#: build/models.py:205 build/templates/build/build_base.html:97 -#: build/templates/build/detail.html:29 company/models.py:1056 order/api.py:817 -#: order/models.py:1401 order/models.py:1544 order/models.py:1545 -#: part/api.py:1547 part/api.py:1841 part/models.py:390 part/models.py:3004 -#: part/models.py:3148 part/models.py:3292 part/models.py:3315 -#: part/models.py:3336 part/models.py:3358 part/models.py:3468 -#: part/models.py:3764 part/models.py:3920 part/models.py:4013 -#: part/models.py:4374 part/serializers.py:1107 part/serializers.py:1713 +#: build/models.py:235 build/templates/build/build_base.html:97 +#: build/templates/build/detail.html:29 company/models.py:1058 order/api.py:821 +#: order/models.py:1450 order/models.py:1595 order/models.py:1596 +#: part/api.py:1501 part/api.py:1795 part/models.py:392 part/models.py:3047 +#: part/models.py:3191 part/models.py:3335 part/models.py:3358 +#: part/models.py:3379 part/models.py:3401 part/models.py:3511 +#: part/models.py:3807 part/models.py:3963 part/models.py:4056 +#: part/models.py:4417 part/serializers.py:1124 part/serializers.py:1730 #: 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 +#: report/templates/report/inventree_build_order_report.html:109 +#: report/templates/report/inventree_purchase_order_report.html:27 +#: report/templates/report/inventree_return_order_report.html:24 +#: report/templates/report/inventree_sales_order_report.html:27 +#: report/templates/report/inventree_stock_location_report.html:102 +#: stock/serializers.py:110 stock/serializers.py:158 stock/serializers.py:396 +#: stock/serializers.py:818 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/build.js:1312 templates/js/translated/build.js:1743 +#: templates/js/translated/build.js:2162 templates/js/translated/build.js:2335 #: templates/js/translated/company.js:348 #: templates/js/translated/company.js:1116 #: templates/js/translated/company.js:1271 #: templates/js/translated/company.js:1559 templates/js/translated/index.js:109 #: templates/js/translated/part.js:1943 templates/js/translated/part.js:2015 -#: templates/js/translated/part.js:2324 templates/js/translated/pricing.js:369 +#: templates/js/translated/part.js:2323 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/purchase_order.js:1848 +#: templates/js/translated/purchase_order.js:2007 +#: templates/js/translated/return_order.js:538 +#: templates/js/translated/return_order.js:709 #: templates/js/translated/sales_order.js:300 -#: templates/js/translated/sales_order.js:1197 -#: templates/js/translated/sales_order.js:1598 -#: templates/js/translated/sales_order.js:1796 +#: templates/js/translated/sales_order.js:1233 +#: templates/js/translated/sales_order.js:1634 +#: templates/js/translated/sales_order.js:1832 #: templates/js/translated/stock.js:676 templates/js/translated/stock.js:842 -#: templates/js/translated/stock.js:1058 templates/js/translated/stock.js:1996 +#: templates/js/translated/stock.js:1058 templates/js/translated/stock.js:1997 #: templates/js/translated/stock.js:2857 templates/js/translated/stock.js:3090 #: templates/js/translated/stock.js:3236 msgid "Part" msgstr "Teil" -#: build/models.py:213 +#: build/models.py:243 msgid "Select part to build" msgstr "Teil für den Bauauftrag wählen" -#: build/models.py:218 +#: build/models.py:248 msgid "Sales Order Reference" msgstr "Auftrag Referenz" -#: build/models.py:222 +#: build/models.py:252 msgid "SalesOrder to which this build is allocated" msgstr "Bestellung, die diesem Bauauftrag zugewiesen ist" -#: build/models.py:227 build/serializers.py:964 -#: templates/js/translated/build.js:1728 -#: templates/js/translated/sales_order.js:1185 +#: build/models.py:257 build/serializers.py:1000 +#: templates/js/translated/build.js:1731 +#: templates/js/translated/sales_order.js:1221 msgid "Source Location" msgstr "Quell-Lagerort" -#: build/models.py:231 +#: build/models.py:261 msgid "Select location to take stock from for this build (leave blank to take from any stock location)" msgstr "Entnahme-Lagerort für diesen Bauauftrag wählen (oder leer lassen für einen beliebigen Lagerort)" -#: build/models.py:236 +#: build/models.py:266 msgid "Destination Location" msgstr "Ziel-Lagerort" -#: build/models.py:240 +#: build/models.py:270 msgid "Select location where the completed items will be stored" msgstr "Lagerort an dem fertige Objekte gelagert werden auswählen" -#: build/models.py:244 +#: build/models.py:274 msgid "Build Quantity" msgstr "Bau-Anzahl" -#: build/models.py:247 +#: build/models.py:277 msgid "Number of stock items to build" msgstr "Anzahl der zu bauenden Lagerartikel" -#: build/models.py:251 +#: build/models.py:281 msgid "Completed items" msgstr "Fertiggestellte Teile" -#: build/models.py:253 +#: build/models.py:283 msgid "Number of stock items which have been completed" msgstr "Anzahl der fertigen Lagerartikel" -#: build/models.py:257 +#: build/models.py:287 msgid "Build Status" msgstr "Bauauftrags-Status" -#: build/models.py:261 +#: build/models.py:291 msgid "Build status code" msgstr "Bau-Statuscode" -#: build/models.py:270 build/serializers.py:280 order/serializers.py:577 -#: stock/models.py:823 stock/serializers.py:1333 +#: build/models.py:300 build/serializers.py:287 order/serializers.py:581 +#: stock/models.py:840 stock/serializers.py:75 stock/serializers.py:1462 #: templates/js/translated/purchase_order.js:1129 msgid "Batch Code" msgstr "Losnummer" -#: build/models.py:274 build/serializers.py:281 +#: build/models.py:304 build/serializers.py:288 msgid "Batch code for this build output" msgstr "Losnummer für dieses Endprodukt" -#: build/models.py:277 order/models.py:304 part/models.py:1079 -#: part/templates/part/part_base.html:310 -#: templates/js/translated/return_order.js:339 -#: templates/js/translated/sales_order.js:827 +#: build/models.py:307 order/models.py:316 order/serializers.py:120 +#: part/models.py:1122 part/templates/part/part_base.html:310 +#: templates/js/translated/return_order.js:338 +#: templates/js/translated/sales_order.js:863 msgid "Creation Date" msgstr "Erstelldatum" -#: build/models.py:281 +#: build/models.py:311 msgid "Target completion date" msgstr "geplantes Fertigstellungsdatum" -#: build/models.py:282 +#: build/models.py:312 msgid "Target date for build completion. Build will be overdue after this date." msgstr "Zieldatum für Bauauftrag-Fertigstellung." -#: build/models.py:285 order/models.py:500 order/models.py:2041 -#: templates/js/translated/build.js:2245 +#: build/models.py:315 order/models.py:521 order/models.py:2101 +#: templates/js/translated/build.js:2247 msgid "Completion Date" msgstr "Fertigstellungsdatum" -#: build/models.py:291 +#: build/models.py:321 msgid "completed by" msgstr "Fertiggestellt von" -#: build/models.py:299 templates/js/translated/build.js:2205 +#: build/models.py:329 templates/js/translated/build.js:2207 msgid "Issued by" msgstr "Aufgegeben von" -#: build/models.py:300 +#: build/models.py:330 msgid "User who issued this build order" msgstr "Nutzer der diesen Bauauftrag erstellt hat" -#: build/models.py:308 build/templates/build/build_base.html:204 +#: build/models.py:338 build/templates/build/build_base.html:204 #: build/templates/build/detail.html:122 common/models.py:145 -#: order/models.py:322 order/templates/order/order_base.html:217 +#: order/models.py:334 order/templates/order/order_base.html:217 #: order/templates/order/return_order_base.html:188 -#: order/templates/order/sales_order_base.html:228 part/models.py:1096 +#: order/templates/order/sales_order_base.html:232 part/models.py:1139 #: part/templates/part/part_base.html:390 -#: report/templates/report/inventree_build_order_base.html:158 +#: report/templates/report/inventree_build_order_report.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/build.js:2219 +#: templates/js/translated/purchase_order.js:1763 +#: templates/js/translated/return_order.js:358 #: templates/js/translated/table_filters.js:531 msgid "Responsible" msgstr "Verantwortlicher Benutzer" -#: build/models.py:309 +#: build/models.py:339 msgid "User or group responsible for this build order" msgstr "Benutzer oder Gruppe verantwortlich für diesen Bauauftrag" -#: build/models.py:314 build/templates/build/detail.html:108 +#: build/models.py:344 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:819 +#: order/templates/order/sales_order_base.html:184 +#: part/templates/part/part_base.html:383 stock/models.py:836 #: stock/templates/stock/item_base.html:200 #: templates/js/translated/company.js:1019 msgid "External Link" msgstr "Externer Link" -#: build/models.py:319 +#: build/models.py:349 msgid "Build Priority" msgstr "Bauauftrags-Priorität" -#: build/models.py:322 +#: build/models.py:352 msgid "Priority of this build order" msgstr "Priorität dieses Bauauftrags" -#: build/models.py:329 common/models.py:129 order/admin.py:18 -#: order/models.py:286 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 +#: build/models.py:359 common/models.py:129 order/admin.py:18 +#: order/models.py:298 templates/InvenTree/settings/settings_staff_js.html:146 +#: templates/js/translated/build.js:2144 +#: templates/js/translated/purchase_order.js:1710 +#: templates/js/translated/return_order.js:317 +#: templates/js/translated/sales_order.js:842 #: templates/js/translated/table_filters.js:48 #: templates/project_code_data.html:6 msgid "Project Code" msgstr "Projektcode" -#: build/models.py:330 +#: build/models.py:360 msgid "Project code for this build order" msgstr "Projektcode für diesen Auftrag" -#: build/models.py:581 +#: build/models.py:593 build/models.py:658 +msgid "Failed to offload task to complete build allocations" +msgstr "Fehler beim Abladen der Aufgabe, um die Build-Allokation abzuschließen" + +#: build/models.py:615 #, python-brace-format msgid "Build order {build} has been completed" msgstr "Bauauftrag {build} wurde fertiggestellt" -#: build/models.py:587 +#: build/models.py:621 msgid "A build order has been completed" msgstr "Ein Bauauftrag wurde fertiggestellt" -#: build/models.py:805 build/models.py:880 +#: build/models.py:847 build/models.py:932 msgid "No build output specified" msgstr "kein Endprodukt angegeben" -#: build/models.py:808 +#: build/models.py:850 msgid "Build output is already completed" msgstr "Endprodukt bereits hergstellt" -#: build/models.py:811 +#: build/models.py:853 msgid "Build output does not match Build Order" msgstr "Endprodukt stimmt nicht mit dem Bauauftrag überein" -#: build/models.py:884 build/serializers.py:223 build/serializers.py:262 -#: build/serializers.py:831 order/models.py:538 order/serializers.py:429 -#: order/serializers.py:572 part/serializers.py:1471 part/serializers.py:1871 -#: stock/models.py:662 stock/models.py:1474 stock/serializers.py:472 +#: build/models.py:936 build/serializers.py:220 build/serializers.py:269 +#: build/serializers.py:867 order/models.py:559 order/serializers.py:433 +#: order/serializers.py:576 part/serializers.py:1488 part/serializers.py:1888 +#: stock/models.py:679 stock/models.py:1499 stock/serializers.py:601 msgid "Quantity must be greater than zero" msgstr "Anzahl muss größer Null sein" -#: build/models.py:889 build/serializers.py:228 +#: build/models.py:941 build/serializers.py:225 msgid "Quantity cannot be greater than the output quantity" msgstr "Menge kann nicht größer als die Ausgangsmenge sein" -#: build/models.py:946 build/serializers.py:533 +#: build/models.py:1001 build/serializers.py:548 #, 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:1308 +#: build/models.py:1352 +msgid "Build Order Line Item" +msgstr "" + +#: build/models.py:1377 msgid "Build object" msgstr "Objekt bauen" -#: build/models.py:1322 build/models.py:1578 build/serializers.py:210 -#: build/serializers.py:247 build/templates/build/build_base.html:102 -#: build/templates/build/detail.html:34 common/models.py:2516 -#: order/models.py:1259 order/models.py:1916 order/serializers.py:1335 -#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:416 -#: part/forms.py:48 part/models.py:3162 part/models.py:4035 +#: build/models.py:1391 build/models.py:1647 build/serializers.py:207 +#: build/serializers.py:254 build/templates/build/build_base.html:102 +#: build/templates/build/detail.html:34 common/models.py:2539 +#: order/models.py:1308 order/models.py:1967 order/serializers.py:1339 +#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:418 +#: part/forms.py:48 part/models.py:3205 part/models.py:4078 #: 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 +#: report/templates/report/inventree_build_order_report.html:113 +#: report/templates/report/inventree_purchase_order_report.html:29 +#: report/templates/report/inventree_sales_order_report.html:29 +#: report/templates/report/inventree_stock_location_report.html:104 +#: report/templates/report/inventree_test_report.html:90 +#: report/templates/report/inventree_test_report.html:170 stock/admin.py:160 +#: stock/serializers.py:126 stock/serializers.py:166 stock/serializers.py:592 #: 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/build.js:737 templates/js/translated/build.js:1369 +#: templates/js/translated/build.js:1746 templates/js/translated/build.js:2357 #: templates/js/translated/company.js:1818 -#: templates/js/translated/model_renderers.js:230 +#: templates/js/translated/model_renderers.js:236 #: templates/js/translated/order.js:304 templates/js/translated/part.js:961 -#: templates/js/translated/part.js:1811 templates/js/translated/part.js:3341 +#: templates/js/translated/part.js:1811 templates/js/translated/part.js:3340 #: 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/purchase_order.js:1852 +#: templates/js/translated/purchase_order.js:2071 #: 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/sales_order.js:1235 +#: templates/js/translated/sales_order.js:1554 +#: templates/js/translated/sales_order.js:1644 +#: templates/js/translated/sales_order.js:1734 +#: templates/js/translated/sales_order.js:1860 #: templates/js/translated/stock.js:564 templates/js/translated/stock.js:702 #: templates/js/translated/stock.js:873 templates/js/translated/stock.js:3021 #: templates/js/translated/stock.js:3104 msgid "Quantity" msgstr "Anzahl" -#: build/models.py:1323 +#: build/models.py:1392 msgid "Required quantity for build order" msgstr "Erforderliche Menge für Auftrag" -#: build/models.py:1403 +#: build/models.py:1472 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:1412 +#: build/models.py:1481 #, 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:1422 order/models.py:1867 +#: build/models.py:1491 order/models.py:1918 msgid "Stock item is over-allocated" msgstr "BestandObjekt ist zu oft zugewiesen" -#: build/models.py:1428 order/models.py:1870 +#: build/models.py:1497 order/models.py:1921 msgid "Allocation quantity must be greater than zero" msgstr "Reserviermenge muss größer null sein" -#: build/models.py:1434 +#: build/models.py:1503 msgid "Quantity must be 1 for serialized stock" msgstr "Anzahl muss 1 für Objekte mit Seriennummer sein" -#: build/models.py:1493 +#: build/models.py:1562 msgid "Selected stock item does not match BOM line" msgstr "Ausgewählter Lagerbestand stimmt nicht mit BOM-Linie überein" -#: build/models.py:1565 build/serializers.py:811 order/serializers.py:1179 -#: order/serializers.py:1200 stock/serializers.py:566 stock/serializers.py:1052 -#: stock/serializers.py:1164 stock/templates/stock/item_base.html:10 +#: build/models.py:1634 build/serializers.py:847 order/serializers.py:1183 +#: order/serializers.py:1204 stock/models.py:360 stock/serializers.py:92 +#: stock/serializers.py:695 stock/serializers.py:1181 stock/serializers.py:1293 +#: 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/build.js:1745 #: 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/sales_order.js:1234 +#: templates/js/translated/sales_order.js:1535 +#: templates/js/translated/sales_order.js:1540 +#: templates/js/translated/sales_order.js:1641 +#: templates/js/translated/sales_order.js:1728 #: templates/js/translated/stock.js:677 templates/js/translated/stock.js:843 #: templates/js/translated/stock.js:2977 msgid "Stock Item" msgstr "Lagerartikel" -#: build/models.py:1566 +#: build/models.py:1635 msgid "Source stock item" msgstr "Quell-Lagerartikel" -#: build/models.py:1579 +#: build/models.py:1648 msgid "Stock quantity to allocate to build" msgstr "Anzahl an Lagerartikel dem Bauauftrag zuweisen" -#: build/models.py:1587 +#: build/models.py:1656 msgid "Install into" msgstr "Installiere in" -#: build/models.py:1588 +#: build/models.py:1657 msgid "Destination stock item" msgstr "Ziel-Lagerartikel" -#: build/serializers.py:160 build/serializers.py:840 -#: templates/js/translated/build.js:1319 +#: build/serializers.py:157 build/serializers.py:876 +#: templates/js/translated/build.js:1322 msgid "Build Output" msgstr "Endprodukt" -#: build/serializers.py:172 +#: build/serializers.py:169 msgid "Build output does not match the parent build" msgstr "Endprodukt stimmt nicht mit übergeordnetem Bauauftrag überein" -#: build/serializers.py:176 +#: build/serializers.py:173 msgid "Output part does not match BuildOrder part" msgstr "Endprodukt entspricht nicht dem Teil des Bauauftrags" -#: build/serializers.py:180 +#: build/serializers.py:177 msgid "This build output has already been completed" msgstr "Dieses Endprodukt wurde bereits fertiggestellt" -#: build/serializers.py:191 +#: build/serializers.py:188 msgid "This build output is not fully allocated" msgstr "Dieses Endprodukt ist nicht vollständig zugewiesen" -#: build/serializers.py:211 build/serializers.py:248 +#: build/serializers.py:208 build/serializers.py:255 msgid "Enter quantity for build output" msgstr "Menge der Endprodukte angeben" -#: build/serializers.py:269 +#: build/serializers.py:276 msgid "Integer quantity required for trackable parts" msgstr "Ganzzahl für verfolgbare Teile erforderlich" -#: build/serializers.py:272 +#: build/serializers.py:279 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:585 order/serializers.py:1339 -#: stock/serializers.py:483 templates/js/translated/purchase_order.js:1153 +#: build/serializers.py:294 order/serializers.py:589 order/serializers.py:1343 +#: stock/serializers.py:612 templates/js/translated/purchase_order.js:1153 #: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565 msgid "Serial Numbers" msgstr "Seriennummer" -#: build/serializers.py:288 +#: build/serializers.py:295 msgid "Enter serial numbers for build outputs" msgstr "Seriennummer für dieses Endprodukt eingeben" -#: build/serializers.py:301 -msgid "Auto Allocate Serial Numbers" -msgstr "Seriennummern automatisch zuweisen" - -#: build/serializers.py:302 -msgid "Automatically allocate required items with matching serial numbers" -msgstr "Benötigte Lagerartikel automatisch mit passenden Seriennummern zuweisen" - -#: build/serializers.py:337 stock/api.py:995 -msgid "The following serial numbers already exist or are invalid" -msgstr "Die folgenden Seriennummern existieren bereits oder sind ungültig" - -#: build/serializers.py:388 build/serializers.py:450 build/serializers.py:539 -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:561 -#: order/serializers.py:669 order/serializers.py:1675 part/serializers.py:1127 -#: 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 +#: build/serializers.py:300 build/serializers.py:441 build/serializers.py:513 +#: order/serializers.py:565 order/serializers.py:673 order/serializers.py:1679 +#: part/serializers.py:1144 stock/serializers.py:101 stock/serializers.py:623 +#: stock/serializers.py:783 stock/serializers.py:879 stock/serializers.py:1325 +#: stock/serializers.py:1581 stock/templates/stock/item_base.html:394 #: 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/barcode.js:795 templates/js/translated/build.js:1001 +#: templates/js/translated/build.js:2372 #: templates/js/translated/purchase_order.js:1178 #: templates/js/translated/purchase_order.js:1268 -#: templates/js/translated/sales_order.js: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/sales_order.js:1547 +#: templates/js/translated/sales_order.js:1655 +#: templates/js/translated/sales_order.js:1663 +#: templates/js/translated/sales_order.js:1742 #: templates/js/translated/stock.js:678 templates/js/translated/stock.js:844 -#: templates/js/translated/stock.js:1060 templates/js/translated/stock.js:2200 +#: templates/js/translated/stock.js:1060 templates/js/translated/stock.js:2201 #: templates/js/translated/stock.js:2871 msgid "Location" msgstr "Lagerort" -#: build/serializers.py:427 +#: build/serializers.py:301 +msgid "Stock location for build output" +msgstr "Lagerort für Bauprodukt" + +#: build/serializers.py:315 +msgid "Auto Allocate Serial Numbers" +msgstr "Seriennummern automatisch zuweisen" + +#: build/serializers.py:316 +msgid "Automatically allocate required items with matching serial numbers" +msgstr "Benötigte Lagerartikel automatisch mit passenden Seriennummern zuweisen" + +#: build/serializers.py:331 +msgid "Serial numbers must be provided for trackable parts" +msgstr "Seriennummern müssen für nachverfolgbare Teile angegeben werden" + +#: build/serializers.py:356 stock/api.py:1031 +msgid "The following serial numbers already exist or are invalid" +msgstr "Die folgenden Seriennummern existieren bereits oder sind ungültig" + +#: build/serializers.py:403 build/serializers.py:465 build/serializers.py:554 +msgid "A list of build outputs must be provided" +msgstr "Eine Liste von Endprodukten muss angegeben werden" + +#: build/serializers.py:442 msgid "Stock location for scrapped outputs" msgstr "Lagerort für ausgemusterte Ausgänge" -#: build/serializers.py:433 +#: build/serializers.py:448 msgid "Discard Allocations" msgstr "Zuteilungen verwerfen" -#: build/serializers.py:434 +#: build/serializers.py:449 msgid "Discard any stock allocations for scrapped outputs" msgstr "Bestandszuteilung für ausgemusterte Endprodukte verwerfen" -#: build/serializers.py:439 +#: build/serializers.py:454 msgid "Reason for scrapping build output(s)" msgstr "Grund für das Verwerfen des Bauauftrages/der Bauaufträge" -#: build/serializers.py:499 +#: build/serializers.py:514 msgid "Location for completed build outputs" 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:922 -#: order/models.py:2020 order/serializers.py:593 stock/admin.py:165 -#: stock/serializers.py:801 stock/serializers.py:1340 +#: build/serializers.py:520 build/templates/build/build_base.html:151 +#: build/templates/build/detail.html:62 order/models.py:952 +#: order/models.py:2080 order/serializers.py:597 stock/admin.py:165 +#: stock/serializers.py:930 stock/serializers.py:1469 #: stock/templates/stock/item_base.html:427 -#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2189 +#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2191 #: templates/js/translated/purchase_order.js:1308 -#: templates/js/translated/purchase_order.js: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/purchase_order.js:1722 +#: templates/js/translated/return_order.js:330 +#: templates/js/translated/sales_order.js:855 +#: templates/js/translated/stock.js:2176 templates/js/translated/stock.js:2995 #: templates/js/translated/stock.js:3120 msgid "Status" -msgstr "" +msgstr "Status" -#: build/serializers.py:511 +#: build/serializers.py:526 msgid "Accept Incomplete Allocation" msgstr "Unvollständige Zuweisung akzeptieren" -#: build/serializers.py:512 +#: build/serializers.py:527 msgid "Complete outputs if stock has not been fully allocated" msgstr "Endprodukte fertigstellen, auch wenn Bestand nicht fertig zugewiesen wurde" -#: build/serializers.py:592 -msgid "Remove Allocated Stock" -msgstr "Zugewiesenen Bestand entfernen" +#: build/serializers.py:612 +msgid "Consume Allocated Stock" +msgstr "Zugewiesen Bestand verbrauchen" -#: build/serializers.py:593 -msgid "Subtract any stock which has already been allocated to this build" -msgstr "Abzug aller Lagerbestände, die diesem Build bereits zugewiesen wurden" +#: build/serializers.py:613 +msgid "Consume any stock which has already been allocated to this build" +msgstr "Verbrauche alle Bestände, die diesem Bauauftrag bereits zugewiesen wurden" -#: build/serializers.py:599 +#: build/serializers.py:619 msgid "Remove Incomplete Outputs" msgstr "Unfertige Endprodukte entfernen" -#: build/serializers.py:600 +#: build/serializers.py:620 msgid "Delete any build outputs which have not been completed" msgstr "Lösche alle noch nicht abgeschlossenen Endprodukte" -#: build/serializers.py:627 +#: build/serializers.py:647 msgid "Not permitted" msgstr "Nicht erlaubt" -#: build/serializers.py:628 +#: build/serializers.py:648 msgid "Accept as consumed by this build order" msgstr "Als von diesem Bauauftrag verbraucht setzen" -#: build/serializers.py:629 +#: build/serializers.py:649 msgid "Deallocate before completing this build order" msgstr "Bestandszuordnung vor dem Abschluss dieses Bauauftrags freigeben" -#: build/serializers.py:651 +#: build/serializers.py:679 msgid "Overallocated Stock" msgstr "Überbelegter Lagerbestand" -#: build/serializers.py:653 +#: build/serializers.py:681 msgid "How do you want to handle extra stock items assigned to the build order" msgstr "Wie sollen zusätzliche Lagerbestandteile, die dem Bauauftrag zugewiesen wurden, behandelt werden" -#: build/serializers.py:663 +#: build/serializers.py:691 msgid "Some stock items have been overallocated" msgstr "Der Bestand einiger Lagerartikel ist überbelegt" -#: build/serializers.py:668 +#: build/serializers.py:696 msgid "Accept Unallocated" msgstr "Nicht zugewiesene akzeptieren" -#: build/serializers.py:669 +#: build/serializers.py:697 msgid "Accept that stock items have not been fully allocated to this build order" msgstr "Akzeptieren, dass Lagerartikel diesem Bauauftrag nicht vollständig zugewiesen wurden" -#: build/serializers.py:679 templates/js/translated/build.js:315 +#: build/serializers.py:707 templates/js/translated/build.js:315 msgid "Required stock has not been fully allocated" msgstr "Benötigter Bestand wurde nicht vollständig zugewiesen" -#: build/serializers.py:684 order/serializers.py:297 order/serializers.py:1242 +#: build/serializers.py:712 order/serializers.py:301 order/serializers.py:1246 msgid "Accept Incomplete" msgstr "Unvollständig Zuweisung akzeptieren" -#: build/serializers.py:685 +#: build/serializers.py:713 msgid "Accept that the required number of build outputs have not been completed" msgstr "Akzeptieren, dass die erforderliche Anzahl der Bauaufträge nicht abgeschlossen ist" -#: build/serializers.py:695 templates/js/translated/build.js:319 +#: build/serializers.py:723 templates/js/translated/build.js:319 msgid "Required build quantity has not been completed" msgstr "Benötigte Teil-Anzahl wurde noch nicht fertiggestellt" -#: build/serializers.py:704 templates/js/translated/build.js:303 +#: build/serializers.py:732 templates/js/translated/build.js:303 msgid "Build order has incomplete outputs" msgstr "Bauauftrag hat unvollständige Aufbauten" -#: build/serializers.py:734 +#: build/serializers.py:770 msgid "Build Line" msgstr "Bauauftragsposition" -#: build/serializers.py:744 +#: build/serializers.py:780 msgid "Build output" msgstr "Endprodukt" -#: build/serializers.py:752 +#: build/serializers.py:788 msgid "Build output must point to the same build" msgstr "Endprodukt muss auf den gleichen Bauauftrag verweisen" -#: build/serializers.py:788 +#: build/serializers.py:824 msgid "Build Line Item" msgstr "Bauauftragspositionsartikel" -#: build/serializers.py:802 +#: build/serializers.py:838 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:1065 +#: build/serializers.py:853 stock/serializers.py:1194 msgid "Item must be in stock" msgstr "Teil muss auf Lager sein" -#: build/serializers.py:865 order/serializers.py:1233 +#: build/serializers.py:901 order/serializers.py:1237 #, python-brace-format msgid "Available quantity ({q}) exceeded" msgstr "Verfügbare Menge ({q}) überschritten" -#: build/serializers.py:871 +#: build/serializers.py:907 msgid "Build output must be specified for allocation of tracked parts" msgstr "Für Zuweisung von verfolgten Teilen muss ein Endprodukt angegeben sein" -#: build/serializers.py:878 +#: build/serializers.py:914 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:1485 +#: build/serializers.py:938 order/serializers.py:1489 msgid "Allocation items must be provided" msgstr "Zuweisungen müssen angegeben werden" -#: build/serializers.py:965 +#: build/serializers.py:1001 msgid "Stock location where parts are to be sourced (leave blank to take from any location)" msgstr "Lagerort, von dem Teile bezogen werden sollen (leer lassen, um sie von jedem Lagerort zu nehmen)" -#: build/serializers.py:973 +#: build/serializers.py:1009 msgid "Exclude Location" msgstr "Lagerort ausschließen" -#: build/serializers.py:974 +#: build/serializers.py:1010 msgid "Exclude stock items from this selected location" msgstr "Lagerartikel vom ausgewählten Ort ausschließen" -#: build/serializers.py:979 +#: build/serializers.py:1015 msgid "Interchangeable Stock" msgstr "Wechselbares Lagerbestand" -#: build/serializers.py:980 +#: build/serializers.py:1016 msgid "Stock items in multiple locations can be used interchangeably" msgstr "Lagerartikel an mehreren Standorten können austauschbar verwendet werden" -#: build/serializers.py:985 +#: build/serializers.py:1021 msgid "Substitute Stock" msgstr "Ersatzbestand" -#: build/serializers.py:986 +#: build/serializers.py:1022 msgid "Allow allocation of substitute parts" msgstr "Zuordnung von Ersatzteilen erlauben" -#: build/serializers.py:991 +#: build/serializers.py:1027 msgid "Optional Items" msgstr "Optionale Positionen" -#: build/serializers.py:992 +#: build/serializers.py:1028 msgid "Allocate optional BOM items to build order" msgstr "Optionale Stücklisten-Positionen dem Bauauftrag hinzufügen" -#: build/serializers.py:1097 part/models.py:3930 part/models.py:4366 -#: stock/api.py:758 +#: build/serializers.py:1050 +msgid "Failed to start auto-allocation task" +msgstr "Fehler beim Starten der automatischen Zuweisung" + +#: build/serializers.py:1140 part/models.py:3973 part/models.py:4409 +#: stock/api.py:794 msgid "BOM Item" msgstr "Stücklisten-Position" -#: build/serializers.py:1106 templates/js/translated/index.js:130 +#: build/serializers.py:1149 templates/js/translated/index.js:130 msgid "Allocated Stock" msgstr "Zugewiesener Bestand" -#: build/serializers.py:1111 part/admin.py:132 part/bom.py:173 -#: part/serializers.py:817 part/serializers.py:1489 +#: build/serializers.py:1154 part/admin.py:132 part/bom.py:173 +#: part/serializers.py:832 part/serializers.py:1506 #: 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/build.js:2613 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:1116 part/serializers.py:1491 -#: templates/js/translated/build.js:2618 +#: build/serializers.py:1159 part/serializers.py:1508 +#: templates/js/translated/build.js:2617 #: templates/js/translated/table_filters.js:360 msgid "In Production" msgstr "In Produktion" -#: build/serializers.py:1121 part/bom.py:172 part/serializers.py:1514 +#: build/serializers.py:1164 part/bom.py:172 part/serializers.py:1531 #: part/templates/part/part_base.html:192 -#: templates/js/translated/sales_order.js:1893 +#: templates/js/translated/sales_order.js:1929 msgid "Available Stock" msgstr "Verfügbarer Bestand" -#: build/tasks.py:172 +#: build/status_codes.py:11 generic/states/tests.py:17 order/status_codes.py:12 +#: order/status_codes.py:37 order/status_codes.py:64 order/status_codes.py:82 +#: templates/js/translated/table_filters.js:598 +msgid "Pending" +msgstr "Ausstehend" + +#: build/status_codes.py:12 +msgid "Production" +msgstr "in Arbeit" + +#: build/status_codes.py:13 order/status_codes.py:15 order/status_codes.py:45 +#: order/status_codes.py:70 +msgid "Cancelled" +msgstr "Storniert" + +#: build/status_codes.py:14 generic/states/tests.py:19 order/status_codes.py:14 +#: order/status_codes.py:44 order/status_codes.py:69 +#: order/templates/order/order_base.html:158 +#: order/templates/order/sales_order_base.html:165 report/models.py:443 +msgid "Complete" +msgstr "Fertig" + +#: build/tasks.py:184 msgid "Stock required for build order" msgstr "Bestand für Bauauftrag erforderlich" -#: build/tasks.py:189 +#: build/tasks.py:201 msgid "Overdue Build Order" msgstr "Überfälliger Bauauftrag" -#: build/tasks.py:194 +#: build/tasks.py:206 #, python-brace-format msgid "Build order {bo} is now overdue" msgstr "Bauauftrag {bo} ist jetzt überfällig" @@ -1822,18 +1673,18 @@ msgid "Stock has not been fully allocated to this Build Order" msgstr "Bestand wurde Bauauftrag noch nicht vollständig zugewiesen" #: build/templates/build/build_base.html:160 -#: build/templates/build/detail.html:138 order/models.py:297 -#: order/models.py:1294 order/templates/order/order_base.html:186 +#: build/templates/build/detail.html:138 order/models.py:309 +#: order/models.py:1343 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 +#: order/templates/order/sales_order_base.html:196 +#: report/templates/report/inventree_build_order_report.html:125 +#: templates/js/translated/build.js:2239 templates/js/translated/part.js:1830 +#: templates/js/translated/purchase_order.js:1739 +#: templates/js/translated/purchase_order.js:2147 +#: templates/js/translated/return_order.js:346 +#: templates/js/translated/return_order.js:750 +#: templates/js/translated/sales_order.js:871 +#: templates/js/translated/sales_order.js:1903 msgid "Target Date" msgstr "Zieldatum" @@ -1846,7 +1697,7 @@ msgstr "Bauauftrag war fällig am %(target)s" #: 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 +#: order/templates/order/sales_order_base.html:126 #: templates/js/translated/table_filters.js:98 #: templates/js/translated/table_filters.js:524 #: templates/js/translated/table_filters.js:626 @@ -1860,42 +1711,42 @@ msgid "Completed Outputs" msgstr "Fertiggestellte Endprodukte" #: build/templates/build/build_base.html:190 -#: build/templates/build/detail.html:101 order/api.py:1507 order/models.py:1536 -#: order/models.py:1650 order/models.py:1804 +#: build/templates/build/detail.html:101 order/api.py:1511 order/models.py:847 +#: order/models.py:1587 order/models.py:1701 order/models.py:1855 #: 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 +#: report/templates/report/inventree_build_order_report.html:135 +#: report/templates/report/inventree_sales_order_report.html:14 #: stock/templates/stock/item_base.html:369 #: templates/email/overdue_sales_order.html:15 #: templates/js/translated/pricing.js:929 -#: templates/js/translated/sales_order.js:769 -#: templates/js/translated/sales_order.js:992 +#: templates/js/translated/sales_order.js:805 +#: templates/js/translated/sales_order.js:1028 #: templates/js/translated/stock.js:2924 msgid "Sales Order" msgstr "Auftrag" #: build/templates/build/build_base.html:197 #: build/templates/build/detail.html:115 -#: report/templates/report/inventree_build_order_base.html:152 +#: report/templates/report/inventree_build_order_report.html:152 #: templates/js/translated/table_filters.js:24 msgid "Issued By" msgstr "Aufgegeben von" #: build/templates/build/build_base.html:211 -#: build/templates/build/detail.html:94 templates/js/translated/build.js:2154 +#: build/templates/build/detail.html:94 templates/js/translated/build.js:2156 msgid "Priority" msgstr "Priorität" -#: build/templates/build/build_base.html:273 +#: build/templates/build/build_base.html:269 msgid "Delete Build Order" msgstr "Bauauftrag löschen" -#: build/templates/build/build_base.html:283 +#: build/templates/build/build_base.html:279 msgid "Build Order QR Code" msgstr "Bauftrags-QR-Code" -#: build/templates/build/build_base.html:295 +#: build/templates/build/build_base.html:291 msgid "Link Barcode to Build Order" msgstr "Barcode mit Bauauftrag verknüpfen" @@ -1911,8 +1762,8 @@ msgstr "Ausgangs-Lager" msgid "Stock can be taken from any available location." msgstr "Bestand kann jedem verfügbaren Lagerort entnommen werden." -#: build/templates/build/detail.html:49 order/models.py:1430 -#: templates/js/translated/purchase_order.js:2190 +#: build/templates/build/detail.html:49 order/models.py:1479 +#: templates/js/translated/purchase_order.js:2189 msgid "Destination" msgstr "Ziel-Lager" @@ -1926,10 +1777,10 @@ msgstr "Zugewiesene Teile" #: 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/build.js:1380 +#: templates/js/translated/model_renderers.js:241 #: templates/js/translated/purchase_order.js:1274 -#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2189 +#: templates/js/translated/stock.js:1133 templates/js/translated/stock.js:2190 #: templates/js/translated/stock.js:3127 #: templates/js/translated/table_filters.js:313 #: templates/js/translated/table_filters.js:404 @@ -1939,8 +1790,8 @@ msgstr "Losnummer" #: 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 +#: order/templates/order/sales_order_base.html:190 +#: templates/js/translated/build.js:2199 msgid "Created" msgstr "Erstellt" @@ -1949,7 +1800,7 @@ msgid "No target date set" msgstr "Kein Ziel-Datum gesetzt" #: build/templates/build/detail.html:149 -#: order/templates/order/sales_order_base.html:202 +#: order/templates/order/sales_order_base.html:206 #: templates/js/translated/table_filters.js:689 msgid "Completed" msgstr "Fertig" @@ -2043,11 +1894,11 @@ msgstr "Anhänge" msgid "Build Notes" msgstr "Bauauftrags-Notizen" -#: build/templates/build/detail.html:434 +#: build/templates/build/detail.html:435 msgid "Allocation Complete" msgstr "Zuordnung abgeschlossen" -#: build/templates/build/detail.html:435 +#: build/templates/build/detail.html:436 msgid "All lines have been fully allocated" msgstr "Alle Zeilen wurden vollständig zugewiesen" @@ -2125,1458 +1976,1485 @@ msgstr "Projektbeschreibung" msgid "User or group responsible for this project" msgstr "Benutzer oder Gruppe verantwortlich für dieses Projekt" -#: common/models.py:765 +#: common/models.py:766 msgid "Settings key (must be unique - case insensitive)" msgstr "Einstellungs-Schlüssel (muss einzigartig sein, Groß-/ Kleinschreibung wird nicht beachtet)" -#: common/models.py:769 +#: common/models.py:770 msgid "Settings value" msgstr "Einstellungs-Wert" -#: common/models.py:821 +#: common/models.py:822 msgid "Chosen value is not a valid option" msgstr "Wert ist keine gültige Option" -#: common/models.py:837 +#: common/models.py:838 msgid "Value must be a boolean value" msgstr "Wahrheitswert erforderlich" -#: common/models.py:845 +#: common/models.py:846 msgid "Value must be an integer value" msgstr "Nur Ganzzahl eingeben" -#: common/models.py:882 +#: common/models.py:883 msgid "Key string must be unique" msgstr "Schlüsseltext muss eindeutig sein" -#: common/models.py:1114 +#: common/models.py:1115 msgid "No group" msgstr "Keine Gruppe" -#: common/models.py:1157 +#: common/models.py:1158 msgid "An empty domain is not allowed." msgstr "Eine leere Domain ist nicht erlaubt." -#: common/models.py:1159 +#: common/models.py:1160 #, python-brace-format msgid "Invalid domain name: {domain}" msgstr "Ungültiger Domainname: {domain}" -#: common/models.py:1171 +#: common/models.py:1172 msgid "No plugin" msgstr "Kein Plugin" -#: common/models.py:1259 +#: common/models.py:1260 msgid "Restart required" msgstr "Neustart erforderlich" -#: common/models.py:1261 +#: common/models.py:1262 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:1268 +#: common/models.py:1269 msgid "Pending migrations" msgstr "Ausstehende Migrationen" -#: common/models.py:1269 +#: common/models.py:1270 msgid "Number of pending database migrations" msgstr "Anzahl der ausstehenden Datenbankmigrationen" -#: common/models.py:1274 +#: common/models.py:1275 msgid "Server Instance Name" msgstr "Name der Serverinstanz" -#: common/models.py:1276 +#: common/models.py:1277 msgid "String descriptor for the server instance" msgstr "Kurze Beschreibung der Instanz" -#: common/models.py:1280 +#: common/models.py:1281 msgid "Use instance name" msgstr "Name der Instanz verwenden" -#: common/models.py:1281 +#: common/models.py:1282 msgid "Use the instance name in the title-bar" msgstr "Den Namen der Instanz in der Titelleiste verwenden" -#: common/models.py:1286 +#: common/models.py:1287 msgid "Restrict showing `about`" msgstr "Anzeige von `Über` einschränken" -#: common/models.py:1287 +#: common/models.py:1288 msgid "Show the `about` modal only to superusers" msgstr "Zeige das `Über` Fenster nur Administratoren" -#: common/models.py:1292 company/models.py:108 company/models.py:109 +#: common/models.py:1293 company/models.py:108 company/models.py:109 msgid "Company name" msgstr "Firmenname" -#: common/models.py:1293 +#: common/models.py:1294 msgid "Internal company name" msgstr "interner Firmenname" -#: common/models.py:1297 +#: common/models.py:1298 msgid "Base URL" msgstr "Basis-URL" -#: common/models.py:1298 +#: common/models.py:1299 msgid "Base URL for server instance" msgstr "Basis-URL für dieses Instanz" -#: common/models.py:1304 +#: common/models.py:1305 msgid "Default Currency" msgstr "Standardwährung" -#: common/models.py:1305 +#: common/models.py:1306 msgid "Select base currency for pricing calculations" msgstr "Wählen Sie die Basiswährung für Preisberechnungen aus" -#: common/models.py:1311 +#: common/models.py:1312 msgid "Currency Update Interval" msgstr "Währungsaktualisierungsintervall" -#: common/models.py:1313 +#: common/models.py:1314 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:1316 common/models.py:1372 common/models.py:1385 -#: common/models.py:1393 common/models.py:1402 common/models.py:1411 -#: common/models.py:1613 common/models.py:1635 common/models.py:1750 -#: common/models.py:2053 +#: common/models.py:1317 common/models.py:1373 common/models.py:1386 +#: common/models.py:1394 common/models.py:1403 common/models.py:1412 +#: common/models.py:1620 common/models.py:1642 common/models.py:1757 +#: common/models.py:2076 msgid "days" msgstr "Tage" -#: common/models.py:1320 +#: common/models.py:1321 msgid "Currency Update Plugin" msgstr "Währungs-Aktualisierungs-Plugin" -#: common/models.py:1321 +#: common/models.py:1322 msgid "Currency update plugin to use" msgstr "Zu verwendendes Währungs-Aktualisierungs-Plugin" -#: common/models.py:1326 +#: common/models.py:1327 msgid "Download from URL" msgstr "Von URL herunterladen" -#: common/models.py:1328 +#: common/models.py:1329 msgid "Allow download of remote images and files from external URL" msgstr "Herunterladen von externen Bildern und Dateien von URLs erlaubt" -#: common/models.py:1334 +#: common/models.py:1335 msgid "Download Size Limit" msgstr "Download-Größenlimit" -#: common/models.py:1335 +#: common/models.py:1336 msgid "Maximum allowable download size for remote image" msgstr "Maximal zulässige Größe für heruntergeladene Bilder" -#: common/models.py:1341 +#: common/models.py:1342 msgid "User-agent used to download from URL" msgstr "Benutzer-Agent zum Herunterladen von Daten" -#: common/models.py:1343 +#: common/models.py:1344 msgid "Allow to override the user-agent used to download images and files from external URL (leave blank for the default)" msgstr "Überschreiben des Benutzer-Agenten, der verwendet wird, um Bilder und Dateien von externer Servern herunterzuladen (leer für die Standardeinstellung)" -#: common/models.py:1348 +#: common/models.py:1349 msgid "Strict URL Validation" msgstr "Strenge URL-Prüfung" -#: common/models.py:1349 +#: common/models.py:1350 msgid "Require schema specification when validating URLs" msgstr "Erfordert die Schema-Spezifikation bei der Validierung von URLs" -#: common/models.py:1354 +#: common/models.py:1355 msgid "Require confirm" msgstr "Bestätigung verpflichtend" -#: common/models.py:1355 +#: common/models.py:1356 msgid "Require explicit user confirmation for certain action." msgstr "Eine ausdrückliche Benutzerbestätigung für bestimmte Aktionen erfordern." -#: common/models.py:1360 +#: common/models.py:1361 msgid "Tree Depth" msgstr "Baumtiefe" -#: common/models.py:1362 +#: common/models.py:1363 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:1368 +#: common/models.py:1369 msgid "Update Check Interval" msgstr "Prüfungsintervall aktualisieren" -#: common/models.py:1369 +#: common/models.py:1370 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:1375 +#: common/models.py:1376 msgid "Automatic Backup" msgstr "Automatische Sicherung" -#: common/models.py:1376 +#: common/models.py:1377 msgid "Enable automatic backup of database and media files" msgstr "Automatische Sicherung der Datenbank- und Mediendateien aktivieren" -#: common/models.py:1381 +#: common/models.py:1382 msgid "Auto Backup Interval" msgstr "Intervall für automatische Sicherung" -#: common/models.py:1382 +#: common/models.py:1383 msgid "Specify number of days between automated backup events" msgstr "Anzahl der Tage zwischen automatischen Sicherungen" -#: common/models.py:1388 +#: common/models.py:1389 msgid "Task Deletion Interval" msgstr "Aufgabenlöschinterval" -#: common/models.py:1390 +#: common/models.py:1391 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:1397 +#: common/models.py:1398 msgid "Error Log Deletion Interval" msgstr "Löschintervall für Fehlerprotokolle" -#: common/models.py:1399 +#: common/models.py:1400 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:1406 +#: common/models.py:1407 msgid "Notification Deletion Interval" msgstr "Löschintervall für Benachrichtigungen" -#: common/models.py:1408 +#: common/models.py:1409 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:1415 templates/InvenTree/settings/sidebar.html:31 +#: common/models.py:1416 templates/InvenTree/settings/sidebar.html:31 msgid "Barcode Support" msgstr "Bacode-Feature verwenden" -#: common/models.py:1416 +#: common/models.py:1417 msgid "Enable barcode scanner support in the web interface" msgstr "Barcode-Scanner Unterstützung im Webinterface aktivieren" -#: common/models.py:1421 +#: common/models.py:1422 msgid "Barcode Input Delay" msgstr "Barcode-Eingabeverzögerung" -#: common/models.py:1422 +#: common/models.py:1423 msgid "Barcode input processing delay time" msgstr "Verzögerungszeit bei Barcode-Eingabe" -#: common/models.py:1428 +#: common/models.py:1429 msgid "Barcode Webcam Support" msgstr "Barcode Webcam-Unterstützung" -#: common/models.py:1429 +#: common/models.py:1430 msgid "Allow barcode scanning via webcam in browser" msgstr "Barcode-Scannen über Webcam im Browser erlauben" -#: common/models.py:1434 +#: common/models.py:1435 msgid "Part Revisions" msgstr "Artikelrevisionen" -#: common/models.py:1435 +#: common/models.py:1436 msgid "Enable revision field for Part" msgstr "Revisions-Feld für Artikel aktivieren" -#: common/models.py:1440 -msgid "IPN Regex" +#: common/models.py:1441 +msgid "Allow Deletion from Assembly" msgstr "" -#: common/models.py:1441 +#: common/models.py:1442 +msgid "Allow deletion of parts which are used in an assembly" +msgstr "" + +#: common/models.py:1447 +msgid "IPN Regex" +msgstr "IPN Regex" + +#: common/models.py:1448 msgid "Regular expression pattern for matching Part IPN" msgstr "RegEx Muster für die Zuordnung von Teil-IPN" -#: common/models.py:1444 +#: common/models.py:1451 msgid "Allow Duplicate IPN" msgstr "Mehrere Artikel mit gleicher IPN erlaubt" -#: common/models.py:1445 +#: common/models.py:1452 msgid "Allow multiple parts to share the same IPN" msgstr "Mehrere Artikel mit gleicher IPN erlaubt" -#: common/models.py:1450 +#: common/models.py:1457 msgid "Allow Editing IPN" msgstr "Ändern von IPN erlaubt" -#: common/models.py:1451 +#: common/models.py:1458 msgid "Allow changing the IPN value while editing a part" msgstr "Ändern der IPN während des Bearbeiten eines Teils erlaubt" -#: common/models.py:1456 +#: common/models.py:1463 msgid "Copy Part BOM Data" msgstr "Teil-Stückliste kopieren" -#: common/models.py:1457 +#: common/models.py:1464 msgid "Copy BOM data by default when duplicating a part" msgstr "Stückliste von Teil kopieren wenn das Teil dupliziert wird " -#: common/models.py:1462 +#: common/models.py:1469 msgid "Copy Part Parameter Data" msgstr "Teil-Parameter kopieren" -#: common/models.py:1463 +#: common/models.py:1470 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:1468 +#: common/models.py:1475 msgid "Copy Part Test Data" msgstr "Teil-Testdaten kopieren" -#: common/models.py:1469 +#: common/models.py:1476 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:1474 +#: common/models.py:1481 msgid "Copy Category Parameter Templates" msgstr "Kategorie-Parametervorlage kopieren" -#: common/models.py:1475 +#: common/models.py:1482 msgid "Copy category parameter templates when creating a part" msgstr "Kategorie-Parameter Vorlagen kopieren wenn ein Teil angelegt wird" -#: common/models.py:1480 part/admin.py:108 part/models.py:3772 -#: report/models.py:182 stock/serializers.py:99 +#: common/models.py:1487 part/admin.py:108 part/models.py:3815 +#: report/models.py:293 report/models.py:360 report/serializers.py:90 +#: report/serializers.py:131 stock/serializers.py:228 #: templates/js/translated/table_filters.js:139 #: templates/js/translated/table_filters.js:767 msgid "Template" msgstr "Vorlage" -#: common/models.py:1481 +#: common/models.py:1488 msgid "Parts are templates by default" msgstr "Teile sind standardmäßig Vorlagen" -#: common/models.py:1486 part/admin.py:91 part/admin.py:431 part/models.py:1016 +#: common/models.py:1493 part/admin.py:91 part/admin.py:433 part/models.py:1059 #: 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:1487 +#: common/models.py:1494 msgid "Parts can be assembled from other components by default" msgstr "Teile können standardmäßig aus anderen Teilen angefertigt werden" -#: common/models.py:1492 part/admin.py:95 part/models.py:1022 +#: common/models.py:1499 part/admin.py:95 part/models.py:1065 #: templates/js/translated/table_filters.js:729 msgid "Component" msgstr "Komponente" -#: common/models.py:1493 +#: common/models.py:1500 msgid "Parts can be used as sub-components by default" msgstr "Teile können standardmäßig in Baugruppen benutzt werden" -#: common/models.py:1498 part/admin.py:100 part/models.py:1034 +#: common/models.py:1505 part/admin.py:100 part/models.py:1077 msgid "Purchaseable" msgstr "Kaufbar" -#: common/models.py:1499 +#: common/models.py:1506 msgid "Parts are purchaseable by default" msgstr "Artikel sind grundsätzlich kaufbar" -#: common/models.py:1504 part/admin.py:104 part/models.py:1040 +#: common/models.py:1511 part/admin.py:104 part/models.py:1083 #: templates/js/translated/table_filters.js:755 msgid "Salable" msgstr "Verkäuflich" -#: common/models.py:1505 +#: common/models.py:1512 msgid "Parts are salable by default" msgstr "Artikel sind grundsätzlich verkaufbar" -#: common/models.py:1510 part/admin.py:113 part/models.py:1028 +#: common/models.py:1517 part/admin.py:113 part/models.py:1071 #: 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:1511 +#: common/models.py:1518 msgid "Parts are trackable by default" msgstr "Artikel sind grundsätzlich verfolgbar" -#: common/models.py:1516 part/admin.py:117 part/models.py:1050 +#: common/models.py:1523 part/admin.py:117 part/models.py:1093 #: 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:1517 +#: common/models.py:1524 msgid "Parts are virtual by default" msgstr "Teile sind grundsätzlich virtuell" -#: common/models.py:1522 +#: common/models.py:1529 msgid "Show Import in Views" msgstr "Import in Ansichten anzeigen" -#: common/models.py:1523 +#: common/models.py:1530 msgid "Display the import wizard in some part views" msgstr "Importassistent in einigen Teil-Ansichten anzeigen" -#: common/models.py:1528 +#: common/models.py:1535 msgid "Show related parts" msgstr "Verwandte Teile anzeigen" -#: common/models.py:1529 +#: common/models.py:1536 msgid "Display related parts for a part" msgstr "Verwandte Teile eines Teils anzeigen" -#: common/models.py:1534 +#: common/models.py:1541 msgid "Initial Stock Data" msgstr "Initialer Lagerbestand" -#: common/models.py:1535 +#: common/models.py:1542 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:1540 templates/js/translated/part.js:107 +#: common/models.py:1547 templates/js/translated/part.js:107 msgid "Initial Supplier Data" msgstr "Initiale Lieferantendaten" -#: common/models.py:1542 +#: common/models.py:1549 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:1548 +#: common/models.py:1555 msgid "Part Name Display Format" msgstr "Anzeigeformat für Teilenamen" -#: common/models.py:1549 +#: common/models.py:1556 msgid "Format to display the part name" msgstr "Format für den Namen eines Teiles" -#: common/models.py:1555 +#: common/models.py:1562 msgid "Part Category Default Icon" msgstr "Standardsymbol der Teilkategorie" -#: common/models.py:1556 +#: common/models.py:1563 msgid "Part category default icon (empty means no icon)" msgstr "Standardsymbol der Teilkategorie (leer bedeutet kein Symbol)" -#: common/models.py:1560 +#: common/models.py:1567 msgid "Enforce Parameter Units" msgstr "Parameter Einheiten durchsetzen" -#: common/models.py:1562 +#: common/models.py:1569 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:1568 +#: common/models.py:1575 msgid "Minimum Pricing Decimal Places" msgstr "Dezimalstellen für minimalen Preis" -#: common/models.py:1570 +#: common/models.py:1577 msgid "Minimum number of decimal places to display when rendering pricing data" msgstr "Mindestanzahl der Dezimalstellen bei der Darstellung der Preisdaten" -#: common/models.py:1576 +#: common/models.py:1583 msgid "Maximum Pricing Decimal Places" msgstr "Dezimalstellen für maximalen Preis" -#: common/models.py:1578 +#: common/models.py:1585 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:1584 +#: common/models.py:1591 msgid "Use Supplier Pricing" msgstr "Zulieferer-Preise verwenden" -#: common/models.py:1586 +#: common/models.py:1593 msgid "Include supplier price breaks in overall pricing calculations" msgstr "Lieferanten-Staffelpreise in die Gesamt-Preisberechnungen einbeziehen" -#: common/models.py:1592 +#: common/models.py:1599 msgid "Purchase History Override" msgstr "Kaufverlauf überschreiben" -#: common/models.py:1594 +#: common/models.py:1601 msgid "Historical purchase order pricing overrides supplier price breaks" msgstr "Historische Bestellungspreise überschreiben die Lieferanten-Staffelpreise" -#: common/models.py:1600 +#: common/models.py:1607 msgid "Use Stock Item Pricing" msgstr "Lagerartikel-Preis verwenden" -#: common/models.py:1602 +#: common/models.py:1609 msgid "Use pricing from manually entered stock data for pricing calculations" msgstr "Preise aus manuell eingegebenen Lagerdaten für Preisberechnungen verwenden" -#: common/models.py:1608 +#: common/models.py:1615 msgid "Stock Item Pricing Age" msgstr "Lagerartikelpreis Alter" -#: common/models.py:1610 +#: common/models.py:1617 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:1617 +#: common/models.py:1624 msgid "Use Variant Pricing" msgstr "Variantenpreise verwenden" -#: common/models.py:1618 +#: common/models.py:1625 msgid "Include variant pricing in overall pricing calculations" msgstr "Variantenpreise in die Gesamt-Preisberechnungen einbeziehen" -#: common/models.py:1623 +#: common/models.py:1630 msgid "Active Variants Only" msgstr "Nur aktive Varianten" -#: common/models.py:1625 +#: common/models.py:1632 msgid "Only use active variant parts for calculating variant pricing" msgstr "Nur aktive Variantenteile zur Berechnung der Variantenbepreisung verwenden" -#: common/models.py:1631 +#: common/models.py:1638 msgid "Pricing Rebuild Interval" msgstr "Intervall für Neuberechnung von Preisen" -#: common/models.py:1633 +#: common/models.py:1640 msgid "Number of days before part pricing is automatically updated" msgstr "Anzahl der Tage bis die Teile-Preisberechnungen automatisch aktualisiert werden" -#: common/models.py:1640 +#: common/models.py:1647 msgid "Internal Prices" msgstr "Interne Preise" -#: common/models.py:1641 +#: common/models.py:1648 msgid "Enable internal prices for parts" msgstr "Interne Preise für Teile aktivieren" -#: common/models.py:1646 +#: common/models.py:1653 msgid "Internal Price Override" msgstr "Interne Preisüberschreibung" -#: common/models.py:1648 +#: common/models.py:1655 msgid "If available, internal prices override price range calculations" msgstr "Falls verfügbar, überschreiben interne Preise Preispannenberechnungen" -#: common/models.py:1654 +#: common/models.py:1661 msgid "Enable label printing" msgstr "Labeldruck aktivieren" -#: common/models.py:1655 +#: common/models.py:1662 msgid "Enable label printing from the web interface" msgstr "Labeldruck über die Website aktivieren" -#: common/models.py:1660 +#: common/models.py:1667 msgid "Label Image DPI" msgstr "Label Bild DPI" -#: common/models.py:1662 +#: common/models.py:1669 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:1668 +#: common/models.py:1675 msgid "Enable Reports" msgstr "Berichte aktivieren" -#: common/models.py:1669 +#: common/models.py:1676 msgid "Enable generation of reports" msgstr "Berichterstellung aktivieren" -#: common/models.py:1674 templates/stats.html:25 +#: common/models.py:1681 templates/stats.html:25 msgid "Debug Mode" msgstr "Entwickler-Modus" -#: common/models.py:1675 +#: common/models.py:1682 msgid "Generate reports in debug mode (HTML output)" msgstr "Berichte im Entwickler-Modus generieren (als HTML)" -#: common/models.py:1680 +#: common/models.py:1687 msgid "Log Report Errors" msgstr "Berichtsfehler protokollieren" -#: common/models.py:1681 +#: common/models.py:1688 msgid "Log errors which occur when generating reports" msgstr "Fehler, die beim Erstellen von Berichten auftreten, protokollieren" -#: common/models.py:1686 plugin/builtin/labels/label_sheet.py:28 -#: report/models.py:203 +#: common/models.py:1693 plugin/builtin/labels/label_sheet.py:28 +#: report/models.py:301 msgid "Page Size" msgstr "Seitengröße" -#: common/models.py:1687 +#: common/models.py:1694 msgid "Default page size for PDF reports" msgstr "Standardseitenformat für PDF-Bericht" -#: common/models.py:1692 +#: common/models.py:1699 msgid "Enable Test Reports" msgstr "Testberichte aktivieren" -#: common/models.py:1693 +#: common/models.py:1700 msgid "Enable generation of test reports" msgstr "Erstellung von Test-Berichten aktivieren" -#: common/models.py:1698 +#: common/models.py:1705 msgid "Attach Test Reports" msgstr "Testberichte anhängen" -#: common/models.py:1700 +#: common/models.py:1707 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:1706 +#: common/models.py:1713 msgid "Globally Unique Serials" msgstr "Global einzigartige Seriennummern" -#: common/models.py:1707 +#: common/models.py:1714 msgid "Serial numbers for stock items must be globally unique" msgstr "Seriennummern für Lagerartikel müssen global eindeutig sein" -#: common/models.py:1712 +#: common/models.py:1719 msgid "Autofill Serial Numbers" msgstr "Seriennummern automatisch ausfüllen" -#: common/models.py:1713 +#: common/models.py:1720 msgid "Autofill serial numbers in forms" msgstr "Seriennummern in Formularen automatisch ausfüllen" -#: common/models.py:1718 +#: common/models.py:1725 msgid "Delete Depleted Stock" msgstr "Erschöpften Lagerartikel löschen" -#: common/models.py:1720 +#: common/models.py:1727 msgid "Determines default behavior when a stock item is depleted" -msgstr "" +msgstr "Legt das Standardverhalten fest, wenn ein Lagerartikel aufgebraucht ist" -#: common/models.py:1726 +#: common/models.py:1733 msgid "Batch Code Template" msgstr "Losnummer Vorlage" -#: common/models.py:1728 +#: common/models.py:1735 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:1733 +#: common/models.py:1740 msgid "Stock Expiry" msgstr "Bestands-Ablauf" -#: common/models.py:1734 +#: common/models.py:1741 msgid "Enable stock expiry functionality" msgstr "Ablaufen von Bestand ermöglichen" -#: common/models.py:1739 +#: common/models.py:1746 msgid "Sell Expired Stock" msgstr "Abgelaufenen Bestand verkaufen" -#: common/models.py:1740 +#: common/models.py:1747 msgid "Allow sale of expired stock" msgstr "Verkauf von abgelaufenem Bestand erlaubt" -#: common/models.py:1745 +#: common/models.py:1752 msgid "Stock Stale Time" msgstr "Bestands-Stehzeit" -#: common/models.py:1747 +#: common/models.py:1754 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:1754 +#: common/models.py:1761 msgid "Build Expired Stock" msgstr "Abgelaufenen Bestand verbauen" -#: common/models.py:1755 +#: common/models.py:1762 msgid "Allow building with expired stock" msgstr "Verbauen von abgelaufenen Bestand erlaubt" -#: common/models.py:1760 +#: common/models.py:1767 msgid "Stock Ownership Control" msgstr "Bestands-Eigentümerkontrolle" -#: common/models.py:1761 +#: common/models.py:1768 msgid "Enable ownership control over stock locations and items" msgstr "Eigentümerkontrolle für Lagerorte und Teile aktivieren" -#: common/models.py:1766 +#: common/models.py:1773 msgid "Stock Location Default Icon" msgstr "Standardsymbol für Lagerort" -#: common/models.py:1767 +#: common/models.py:1774 msgid "Stock location default icon (empty means no icon)" msgstr "Standardsymbol für Lagerstandort (leer bedeutet kein Symbol)" -#: common/models.py:1771 +#: common/models.py:1778 msgid "Show Installed Stock Items" msgstr "Zeige installierte Lagerartikel" -#: common/models.py:1772 +#: common/models.py:1779 msgid "Display installed stock items in stock tables" msgstr "Anzeige der installierten Lagerartikel in Bestandstabellen" -#: common/models.py:1777 +#: common/models.py:1784 msgid "Check BOM when installing items" msgstr "Prüfe BOM bei der Installation von Elementen" -#: common/models.py:1779 +#: common/models.py:1786 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:1785 +#: common/models.py:1792 +msgid "Allow Out of Stock Transfer" +msgstr "Erlaube Verschieben von \"nicht auf Lager\" Bestand" + +#: common/models.py:1794 +msgid "Allow stock items which are not in stock to be transferred between stock locations" +msgstr "Lagerartikel, die nicht auf Lager sind, können zwischen Lagerstandorten übertragen werden" + +#: common/models.py:1800 msgid "Build Order Reference Pattern" msgstr "Bauauftragsreferenz-Muster" -#: common/models.py:1787 +#: common/models.py:1802 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:1793 common/models.py:1821 common/models.py:1843 -#: common/models.py:1871 +#: common/models.py:1808 common/models.py:1836 common/models.py:1858 +#: common/models.py:1894 msgid "Require Responsible Owner" -msgstr "" +msgstr "Verantwortlicher Besitzer erforderlich" -#: common/models.py:1794 common/models.py:1822 common/models.py:1844 -#: common/models.py:1872 +#: common/models.py:1809 common/models.py:1837 common/models.py:1859 +#: common/models.py:1895 msgid "A responsible owner must be assigned to each order" -msgstr "" +msgstr "Jeder Bestellung muss ein verantwortlicher Besitzer zugewiesen werden" -#: common/models.py:1799 +#: common/models.py:1814 msgid "Block Until Tests Pass" msgstr "Blockieren bis Test bestanden" -#: common/models.py:1801 +#: common/models.py:1816 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:1807 +#: common/models.py:1822 msgid "Enable Return Orders" msgstr "Rücksendungen aktivieren" -#: common/models.py:1808 +#: common/models.py:1823 msgid "Enable return order functionality in the user interface" msgstr "Aktivieren der Rücksendung-Funktion in der Benutzeroberfläche" -#: common/models.py:1813 +#: common/models.py:1828 msgid "Return Order Reference Pattern" msgstr "Referenz Muster für Rücksendungen" -#: common/models.py:1815 +#: common/models.py:1830 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:1827 +#: common/models.py:1842 msgid "Edit Completed Return Orders" msgstr "Abgeschlossene Rücksendungen bearbeiten" -#: common/models.py:1829 +#: common/models.py:1844 msgid "Allow editing of return orders after they have been completed" msgstr "Bearbeitung von Rücksendungen nach Abschluss erlauben" -#: common/models.py:1835 +#: common/models.py:1850 msgid "Sales Order Reference Pattern" msgstr "Auftragsreferenz-Muster" -#: common/models.py:1837 +#: common/models.py:1852 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:1849 +#: common/models.py:1864 msgid "Sales Order Default Shipment" msgstr "Auftrag Standardsendung" -#: common/models.py:1850 +#: common/models.py:1865 msgid "Enable creation of default shipment with sales orders" msgstr "Erstelle eine Standardsendung für Aufträge" -#: common/models.py:1855 +#: common/models.py:1870 msgid "Edit Completed Sales Orders" msgstr "Abgeschlossene Aufträge bearbeiten" -#: common/models.py:1857 +#: common/models.py:1872 msgid "Allow editing of sales orders after they have been shipped or completed" msgstr "Bearbeitung von Aufträgen nach Versand oder Abschluss erlauben" -#: common/models.py:1863 +#: common/models.py:1878 +#, fuzzy +#| msgid "Mark this order as complete?" +msgid "Mark Shipped Orders as Complete" +msgstr "Diese Bestellung als vollständig markieren?" + +#: common/models.py:1880 +msgid "Sales orders marked as shipped will automatically be completed, bypassing the \"shipped\" status" +msgstr "" + +#: common/models.py:1886 msgid "Purchase Order Reference Pattern" msgstr "Bestellungsreferenz-Muster" -#: common/models.py:1865 +#: common/models.py:1888 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:1877 +#: common/models.py:1900 msgid "Edit Completed Purchase Orders" msgstr "Abgeschlossene Einkaufsaufträge bearbeiten" -#: common/models.py:1879 +#: common/models.py:1902 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:1885 +#: common/models.py:1908 msgid "Auto Complete Purchase Orders" msgstr "Bestellungen automatisch abschließen" -#: common/models.py:1887 +#: common/models.py:1910 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:1894 +#: common/models.py:1917 msgid "Enable password forgot" msgstr "Passwort vergessen aktivieren" -#: common/models.py:1895 +#: common/models.py:1918 msgid "Enable password forgot function on the login pages" msgstr "Passwort-vergessen-Funktion auf den Anmeldeseiten aktivieren" -#: common/models.py:1900 +#: common/models.py:1923 msgid "Enable registration" msgstr "Registrierung erlauben" -#: common/models.py:1901 +#: common/models.py:1924 msgid "Enable self-registration for users on the login pages" msgstr "Selbstregistrierung für Benutzer auf den Anmeldeseiten aktivieren" -#: common/models.py:1906 +#: common/models.py:1929 msgid "Enable SSO" msgstr "SSO aktivieren" -#: common/models.py:1907 +#: common/models.py:1930 msgid "Enable SSO on the login pages" msgstr "SSO auf den Anmeldeseiten aktivieren" -#: common/models.py:1912 +#: common/models.py:1935 msgid "Enable SSO registration" msgstr "SSO Selbstregistrierung aktivieren" -#: common/models.py:1914 +#: common/models.py:1937 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:1920 +#: common/models.py:1943 msgid "Email required" msgstr "Email-Adresse erforderlich" -#: common/models.py:1921 +#: common/models.py:1944 msgid "Require user to supply mail on signup" msgstr "Benutzer müssen bei der Registrierung eine E-Mail angeben" -#: common/models.py:1926 +#: common/models.py:1949 msgid "Auto-fill SSO users" msgstr "SSO-Benutzer automatisch ausfüllen" -#: common/models.py:1928 +#: common/models.py:1951 msgid "Automatically fill out user-details from SSO account-data" msgstr "Benutzer-Details automatisch aus SSO-Konto ausfüllen" -#: common/models.py:1934 +#: common/models.py:1957 msgid "Mail twice" msgstr "E-Mail zweimal" -#: common/models.py:1935 +#: common/models.py:1958 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:1940 +#: common/models.py:1963 msgid "Password twice" msgstr "Passwort zweimal" -#: common/models.py:1941 +#: common/models.py:1964 msgid "On signup ask users twice for their password" msgstr "Bei der Registrierung den Benutzer zweimal nach dem Passwort fragen" -#: common/models.py:1946 +#: common/models.py:1969 msgid "Allowed domains" msgstr "Erlaubte Domains" -#: common/models.py:1948 +#: common/models.py:1971 msgid "Restrict signup to certain domains (comma-separated, starting with @)" msgstr "Anmeldung auf bestimmte Domänen beschränken (kommagetrennt, beginnend mit @)" -#: common/models.py:1954 +#: common/models.py:1977 msgid "Group on signup" msgstr "Gruppe bei Registrierung" -#: common/models.py:1955 +#: common/models.py:1978 msgid "Group to which new users are assigned on registration" msgstr "Gruppe der neue Benutzer bei der Registrierung zugewiesen werden" -#: common/models.py:1960 +#: common/models.py:1983 msgid "Enforce MFA" msgstr "MFA erzwingen" -#: common/models.py:1961 +#: common/models.py:1984 msgid "Users must use multifactor security." msgstr "Benutzer müssen Multifaktor-Authentifizierung verwenden." -#: common/models.py:1966 +#: common/models.py:1989 msgid "Check plugins on startup" msgstr "Plugins beim Start prüfen" -#: common/models.py:1968 +#: common/models.py:1991 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:1976 +#: common/models.py:1999 msgid "Check for plugin updates" msgstr "Nach Plugin-Aktualisierungen suchen" -#: common/models.py:1977 +#: common/models.py:2000 msgid "Enable periodic checks for updates to installed plugins" msgstr "Periodische Überprüfungen auf Updates für installierte Plugins aktivieren" -#: common/models.py:1983 +#: common/models.py:2006 msgid "Enable URL integration" msgstr "URL-Integration aktivieren" -#: common/models.py:1984 +#: common/models.py:2007 msgid "Enable plugins to add URL routes" msgstr "Plugins zum Hinzufügen von URLs aktivieren" -#: common/models.py:1990 +#: common/models.py:2013 msgid "Enable navigation integration" msgstr "Navigations-Integration aktivieren" -#: common/models.py:1991 +#: common/models.py:2014 msgid "Enable plugins to integrate into navigation" msgstr "Plugins zur Integration in die Navigation aktivieren" -#: common/models.py:1997 +#: common/models.py:2020 msgid "Enable app integration" msgstr "App-Integration aktivieren" -#: common/models.py:1998 +#: common/models.py:2021 msgid "Enable plugins to add apps" msgstr "Plugins zum Hinzufügen von Apps aktivieren" -#: common/models.py:2004 +#: common/models.py:2027 msgid "Enable schedule integration" msgstr "Terminplan-Integration aktivieren" -#: common/models.py:2005 +#: common/models.py:2028 msgid "Enable plugins to run scheduled tasks" msgstr "Geplante Aufgaben aktivieren" -#: common/models.py:2011 +#: common/models.py:2034 msgid "Enable event integration" msgstr "Ereignis-Integration aktivieren" -#: common/models.py:2012 +#: common/models.py:2035 msgid "Enable plugins to respond to internal events" msgstr "Plugins ermöglichen auf interne Ereignisse zu reagieren" -#: common/models.py:2018 +#: common/models.py:2041 msgid "Enable project codes" msgstr "Projektcodes aktivieren" -#: common/models.py:2019 +#: common/models.py:2042 msgid "Enable project codes for tracking projects" msgstr "Aktiviere Projektcodes für die Verfolgung von Projekten" -#: common/models.py:2024 +#: common/models.py:2047 msgid "Stocktake Functionality" msgstr "Inventurfunktionen" -#: common/models.py:2026 +#: common/models.py:2049 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:2032 +#: common/models.py:2055 msgid "Exclude External Locations" msgstr "Externe Standorte ausschließen" -#: common/models.py:2034 +#: common/models.py:2057 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:2040 +#: common/models.py:2063 msgid "Automatic Stocktake Period" msgstr "Automatische Inventur-Periode" -#: common/models.py:2042 +#: common/models.py:2065 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:2048 +#: common/models.py:2071 msgid "Report Deletion Interval" msgstr "Löschintervall für Berichte" -#: common/models.py:2050 +#: common/models.py:2073 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:2057 +#: common/models.py:2080 msgid "Display Users full names" msgstr "Vollständige Namen von Benutzern anzeigen" -#: common/models.py:2058 +#: common/models.py:2081 msgid "Display Users full names instead of usernames" msgstr "Vollständigen Namen von Benutzern anstatt Benutzername anzeigen" -#: common/models.py:2063 +#: common/models.py:2086 msgid "Enable Test Station Data" msgstr "Teststation-Daten aktivieren" -#: common/models.py:2064 +#: common/models.py:2087 msgid "Enable test station data collection for test results" msgstr "Teststation-Datenerfassung für Testergebnisse aktivieren" -#: common/models.py:2076 common/models.py:2486 +#: common/models.py:2099 common/models.py:2509 msgid "Settings key (must be unique - case insensitive" msgstr "Einstellungs-Schlüssel (muss einzigartig sein, Groß-/ Kleinschreibung wird nicht beachtet)" -#: common/models.py:2119 +#: common/models.py:2142 msgid "Hide inactive parts" msgstr "Inaktive Teile ausblenden" -#: common/models.py:2121 +#: common/models.py:2144 msgid "Hide inactive parts in results displayed on the homepage" msgstr "Ausblenden inaktiver Teile in den auf der Startseite angezeigten Ergebnissen" -#: common/models.py:2127 +#: common/models.py:2150 msgid "Show subscribed parts" msgstr "Abonnierte Teile anzeigen" -#: common/models.py:2128 +#: common/models.py:2151 msgid "Show subscribed parts on the homepage" msgstr "Zeige abonnierte Teile auf der Startseite" -#: common/models.py:2133 +#: common/models.py:2156 msgid "Show subscribed categories" msgstr "Abonnierte Kategorien anzeigen" -#: common/models.py:2134 +#: common/models.py:2157 msgid "Show subscribed part categories on the homepage" msgstr "Zeige abonnierte Teilkategorien auf der Startseite" -#: common/models.py:2139 +#: common/models.py:2162 msgid "Show latest parts" msgstr "Neueste Teile anzeigen" -#: common/models.py:2140 +#: common/models.py:2163 msgid "Show latest parts on the homepage" msgstr "Zeige neueste Teile auf der Startseite" -#: common/models.py:2145 +#: common/models.py:2168 msgid "Show invalid BOMs" -msgstr "" +msgstr "Zeige ungültige Stücklisten" -#: common/models.py:2146 +#: common/models.py:2169 msgid "Show BOMs that await validation on the homepage" msgstr "Zeige Stücklisten, die noch nicht validiert sind, auf der Startseite" -#: common/models.py:2151 +#: common/models.py:2174 msgid "Show recent stock changes" msgstr "Neueste Bestandänderungen anzeigen" -#: common/models.py:2152 +#: common/models.py:2175 msgid "Show recently changed stock items on the homepage" msgstr "Zeige zuletzt geänderte Lagerbestände auf der Startseite" -#: common/models.py:2157 +#: common/models.py:2180 msgid "Show low stock" msgstr "Niedrigen Bestand anzeigen" -#: common/models.py:2158 +#: common/models.py:2181 msgid "Show low stock items on the homepage" msgstr "Zeige geringen Bestand auf der Startseite" -#: common/models.py:2163 +#: common/models.py:2186 msgid "Show depleted stock" msgstr "Lerren Bestand anzeigen" -#: common/models.py:2164 +#: common/models.py:2187 msgid "Show depleted stock items on the homepage" msgstr "Zeige aufgebrauchte Lagerartikel auf der Startseite" -#: common/models.py:2169 +#: common/models.py:2192 msgid "Show needed stock" msgstr "Benötigten Bestand anzeigen" -#: common/models.py:2170 +#: common/models.py:2193 msgid "Show stock items needed for builds on the homepage" msgstr "Zeige Bestand für Bauaufträge auf der Startseite" -#: common/models.py:2175 +#: common/models.py:2198 msgid "Show expired stock" msgstr "Abgelaufenen Bestand anzeigen" -#: common/models.py:2176 +#: common/models.py:2199 msgid "Show expired stock items on the homepage" msgstr "Zeige abgelaufene Lagerbestände auf der Startseite" -#: common/models.py:2181 +#: common/models.py:2204 msgid "Show stale stock" msgstr "Alten Bestand anzeigen" -#: common/models.py:2182 +#: common/models.py:2205 msgid "Show stale stock items on the homepage" msgstr "Zeige überfällige Lagerartikel auf der Startseite" -#: common/models.py:2187 +#: common/models.py:2210 msgid "Show pending builds" msgstr "Ausstehende Bauaufträge anzeigen" -#: common/models.py:2188 +#: common/models.py:2211 msgid "Show pending builds on the homepage" msgstr "Zeige ausstehende Bauaufträge auf der Startseite" -#: common/models.py:2193 +#: common/models.py:2216 msgid "Show overdue builds" msgstr "Zeige überfällige Bauaufträge" -#: common/models.py:2194 +#: common/models.py:2217 msgid "Show overdue builds on the homepage" msgstr "Zeige überfällige Bauaufträge auf der Startseite" -#: common/models.py:2199 +#: common/models.py:2222 msgid "Show outstanding POs" msgstr "Ausstehende POs anzeigen" -#: common/models.py:2200 +#: common/models.py:2223 msgid "Show outstanding POs on the homepage" msgstr "Zeige ausstehende POs auf der Startseite" -#: common/models.py:2205 +#: common/models.py:2228 msgid "Show overdue POs" msgstr "Überfällige POs anzeigen" -#: common/models.py:2206 +#: common/models.py:2229 msgid "Show overdue POs on the homepage" msgstr "Zeige überfällige POs auf der Startseite" -#: common/models.py:2211 +#: common/models.py:2234 msgid "Show outstanding SOs" msgstr "Ausstehende SOs anzeigen" -#: common/models.py:2212 +#: common/models.py:2235 msgid "Show outstanding SOs on the homepage" msgstr "Zeige ausstehende SOs auf der Startseite" -#: common/models.py:2217 +#: common/models.py:2240 msgid "Show overdue SOs" msgstr "Überfällige SOs anzeigen" -#: common/models.py:2218 +#: common/models.py:2241 msgid "Show overdue SOs on the homepage" msgstr "Zeige überfällige SOs auf der Startseite" -#: common/models.py:2223 +#: common/models.py:2246 msgid "Show pending SO shipments" msgstr "Ausstehende Versandaufträge anzeigen" -#: common/models.py:2224 +#: common/models.py:2247 msgid "Show pending SO shipments on the homepage" msgstr "Ausstehende Versandaufträge auf der Startseite anzeigen" -#: common/models.py:2229 +#: common/models.py:2252 msgid "Show News" msgstr "Zeige Neuigkeiten" -#: common/models.py:2230 +#: common/models.py:2253 msgid "Show news on the homepage" msgstr "Neuigkeiten auf der Startseite anzeigen" -#: common/models.py:2235 +#: common/models.py:2258 msgid "Inline label display" msgstr "Label inline anzeigen" -#: common/models.py:2237 +#: common/models.py:2260 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:2243 +#: common/models.py:2266 msgid "Default label printer" msgstr "Standard-Etikettendrucker" -#: common/models.py:2245 +#: common/models.py:2268 msgid "Configure which label printer should be selected by default" msgstr "Einen standardmäßig ausgewählten Etikettendrucker konfigurieren" -#: common/models.py:2251 +#: common/models.py:2274 msgid "Inline report display" msgstr "Berichte inline anzeigen" -#: common/models.py:2253 +#: common/models.py:2276 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:2259 +#: common/models.py:2282 msgid "Search Parts" msgstr "Teile suchen" -#: common/models.py:2260 +#: common/models.py:2283 msgid "Display parts in search preview window" msgstr "Teile in der Suchvorschau anzeigen" -#: common/models.py:2265 +#: common/models.py:2288 msgid "Search Supplier Parts" msgstr "Zulieferteile durchsuchen" -#: common/models.py:2266 +#: common/models.py:2289 msgid "Display supplier parts in search preview window" msgstr "Zuliefererteile in der Suchvorschau anzeigen" -#: common/models.py:2271 +#: common/models.py:2294 msgid "Search Manufacturer Parts" msgstr "Herstellerteile durchsuchen" -#: common/models.py:2272 +#: common/models.py:2295 msgid "Display manufacturer parts in search preview window" msgstr "Herstellerteile in der Suchvorschau anzeigen" -#: common/models.py:2277 +#: common/models.py:2300 msgid "Hide Inactive Parts" msgstr "Inaktive Teile ausblenden" -#: common/models.py:2278 +#: common/models.py:2301 msgid "Excluded inactive parts from search preview window" msgstr "Inaktive Teile in der Suchvorschau ausblenden" -#: common/models.py:2283 +#: common/models.py:2306 msgid "Search Categories" msgstr "Kategorien durchsuchen" -#: common/models.py:2284 +#: common/models.py:2307 msgid "Display part categories in search preview window" msgstr "Teilekategorien in der Suchvorschau anzeigen" -#: common/models.py:2289 +#: common/models.py:2312 msgid "Search Stock" msgstr "Bestand durchsuchen" -#: common/models.py:2290 +#: common/models.py:2313 msgid "Display stock items in search preview window" msgstr "Lagerartikel in Suchvorschau anzeigen" -#: common/models.py:2295 +#: common/models.py:2318 msgid "Hide Unavailable Stock Items" msgstr "Nicht verfügbare Artikel ausblenden" -#: common/models.py:2297 +#: common/models.py:2320 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:2303 +#: common/models.py:2326 msgid "Search Locations" msgstr "Lagerorte durchsuchen" -#: common/models.py:2304 +#: common/models.py:2327 msgid "Display stock locations in search preview window" msgstr "Lagerorte in Suchvorschau anzeigen" -#: common/models.py:2309 +#: common/models.py:2332 msgid "Search Companies" msgstr "Firmen durchsuchen" -#: common/models.py:2310 +#: common/models.py:2333 msgid "Display companies in search preview window" msgstr "Firmen in der Suchvorschau anzeigen" -#: common/models.py:2315 +#: common/models.py:2338 msgid "Search Build Orders" msgstr "Bauaufträge durchsuchen" -#: common/models.py:2316 +#: common/models.py:2339 msgid "Display build orders in search preview window" msgstr "Bauaufträge in der Suchvorschau anzeigen" -#: common/models.py:2321 +#: common/models.py:2344 msgid "Search Purchase Orders" msgstr "Bestellungen durchsuchen" -#: common/models.py:2322 +#: common/models.py:2345 msgid "Display purchase orders in search preview window" msgstr "Bestellungen in der Suchvorschau anzeigen" -#: common/models.py:2327 +#: common/models.py:2350 msgid "Exclude Inactive Purchase Orders" msgstr "Inaktive Bestellungen ausblenden" -#: common/models.py:2329 +#: common/models.py:2352 msgid "Exclude inactive purchase orders from search preview window" msgstr "Inaktive Bestellungen in der Suchvorschau ausblenden" -#: common/models.py:2335 +#: common/models.py:2358 msgid "Search Sales Orders" msgstr "Aufträge durchsuchen" -#: common/models.py:2336 +#: common/models.py:2359 msgid "Display sales orders in search preview window" msgstr "Aufträge in der Suchvorschau anzeigen" -#: common/models.py:2341 +#: common/models.py:2364 msgid "Exclude Inactive Sales Orders" msgstr "Inaktive Aufträge ausblenden" -#: common/models.py:2343 +#: common/models.py:2366 msgid "Exclude inactive sales orders from search preview window" msgstr "Inaktive Aufträge in der Suchvorschau ausblenden" -#: common/models.py:2349 +#: common/models.py:2372 msgid "Search Return Orders" msgstr "Suche nach Rücksendungen" -#: common/models.py:2350 +#: common/models.py:2373 msgid "Display return orders in search preview window" msgstr "Rücksendungen in der Suchvorschau anzeigen" -#: common/models.py:2355 +#: common/models.py:2378 msgid "Exclude Inactive Return Orders" msgstr "Inaktive Rücksendungen ausblenden" -#: common/models.py:2357 +#: common/models.py:2380 msgid "Exclude inactive return orders from search preview window" msgstr "Inaktive Rücksendungen in der Suchvorschau ausblenden" -#: common/models.py:2363 +#: common/models.py:2386 msgid "Search Preview Results" msgstr "Anzahl Suchergebnisse" -#: common/models.py:2365 +#: common/models.py:2388 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:2371 +#: common/models.py:2394 msgid "Regex Search" msgstr "Regex Suche" -#: common/models.py:2372 +#: common/models.py:2395 msgid "Enable regular expressions in search queries" msgstr "Reguläre Ausdrücke in Suchabfragen aktivieren" -#: common/models.py:2377 +#: common/models.py:2400 msgid "Whole Word Search" msgstr "Ganzes Wort suchen" -#: common/models.py:2378 +#: common/models.py:2401 msgid "Search queries return results for whole word matches" msgstr "Suchabfragen liefern Ergebnisse für ganze Wortkombinationen" -#: common/models.py:2383 +#: common/models.py:2406 msgid "Show Quantity in Forms" msgstr "zeige Bestand in Eingabemasken" -#: common/models.py:2384 +#: common/models.py:2407 msgid "Display available part quantity in some forms" msgstr "Zeige den verfügbaren Bestand in einigen Eingabemasken" -#: common/models.py:2389 +#: common/models.py:2412 msgid "Escape Key Closes Forms" msgstr "Esc-Taste schließt Formulare" -#: common/models.py:2390 +#: common/models.py:2413 msgid "Use the escape key to close modal forms" msgstr "Benutze die Esc-Taste, um Formulare zu schließen" -#: common/models.py:2395 +#: common/models.py:2418 msgid "Fixed Navbar" msgstr "Fixierter Navigationsleiste" -#: common/models.py:2396 +#: common/models.py:2419 msgid "The navbar position is fixed to the top of the screen" msgstr "Position der Navigationsleiste am oberen Bildschirmrand fixieren" -#: common/models.py:2401 +#: common/models.py:2424 msgid "Date Format" msgstr "Datumsformat" -#: common/models.py:2402 +#: common/models.py:2425 msgid "Preferred format for displaying dates" msgstr "Bevorzugtes Format für die Anzeige von Daten" -#: common/models.py:2415 part/templates/part/detail.html:41 +#: common/models.py:2438 part/templates/part/detail.html:41 msgid "Part Scheduling" msgstr "Teilzeitplanung" -#: common/models.py:2416 +#: common/models.py:2439 msgid "Display part scheduling information" msgstr "Zeige Zeitplanung für Teile" -#: common/models.py:2421 part/templates/part/detail.html:62 +#: common/models.py:2444 part/templates/part/detail.html:62 msgid "Part Stocktake" msgstr "Inventur" -#: common/models.py:2423 +#: common/models.py:2446 msgid "Display part stocktake information (if stocktake functionality is enabled)" msgstr "Zeigt Inventur-Informationen an (falls die Inventurfunktion aktiviert ist)" -#: common/models.py:2429 +#: common/models.py:2452 msgid "Table String Length" msgstr "Zeichenkettenlänge in Tabellen" -#: common/models.py:2431 +#: common/models.py:2454 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:2437 +#: common/models.py:2460 msgid "Default part label template" msgstr "Standardvorlage für Teilebeschriftung" -#: common/models.py:2438 +#: common/models.py:2461 msgid "The part label template to be automatically selected" msgstr "Die Teil-Etikettenvorlage, die automatisch ausgewählt werden soll" -#: common/models.py:2443 +#: common/models.py:2466 msgid "Default stock item template" msgstr "Lagerartikel-Standardvorlage" -#: common/models.py:2445 +#: common/models.py:2468 msgid "The stock item label template to be automatically selected" msgstr "Die Lagerartikel-Etikettenvorlage soll automatisch ausgewählt werden" -#: common/models.py:2451 +#: common/models.py:2474 msgid "Default stock location label template" msgstr "Standardetikettenvorlage für Lagerstandort" -#: common/models.py:2453 +#: common/models.py:2476 msgid "The stock location label template to be automatically selected" msgstr "Die Lagerstandort-Etikettenvorlage, die automatisch ausgewählt werden soll" -#: common/models.py:2459 +#: common/models.py:2482 msgid "Default build line label template" -msgstr "" +msgstr "Standardetikettenvorlage für Bauauftragspositionen" -#: common/models.py:2461 +#: common/models.py:2484 msgid "The build line label template to be automatically selected" -msgstr "" +msgstr "Die Bauauftragspositionsetikettenvorlage welche automatisch ausgewählt werden soll" -#: common/models.py:2467 +#: common/models.py:2490 msgid "Receive error reports" msgstr "Fehlerberichte empfangen" -#: common/models.py:2468 +#: common/models.py:2491 msgid "Receive notifications for system errors" msgstr "Benachrichtigungen bei Systemfehlern erhalten" -#: common/models.py:2473 +#: common/models.py:2496 msgid "Last used printing machines" msgstr "Zuletzt verwendete Druckmaschinen" -#: common/models.py:2474 +#: common/models.py:2497 msgid "Save the last used printing machines for a user" msgstr "Die zuletzt benutzten Druckmaschinen für einen Benutzer speichern" -#: common/models.py:2517 +#: common/models.py:2540 msgid "Price break quantity" msgstr "Preisstaffelungs Anzahl" -#: common/models.py:2524 company/serializers.py:496 order/admin.py:42 -#: order/models.py:1333 order/models.py:2241 +#: common/models.py:2547 company/serializers.py:496 order/admin.py:42 +#: order/models.py:1382 order/models.py:2301 #: templates/js/translated/company.js:1823 templates/js/translated/part.js:1885 #: templates/js/translated/pricing.js:621 -#: templates/js/translated/return_order.js:741 +#: templates/js/translated/return_order.js:740 msgid "Price" msgstr "Preis" -#: common/models.py:2525 +#: common/models.py:2548 msgid "Unit price at specified quantity" msgstr "Stückpreis für die angegebene Anzahl" -#: common/models.py:2696 common/models.py:2881 +#: common/models.py:2719 common/models.py:2904 msgid "Endpoint" msgstr "Endpunkt" -#: common/models.py:2697 +#: common/models.py:2720 msgid "Endpoint at which this webhook is received" msgstr "Endpunkt, an dem dieser Webhook empfangen wird" -#: common/models.py:2707 +#: common/models.py:2730 msgid "Name for this webhook" msgstr "Name für diesen Webhook" -#: common/models.py:2711 company/models.py:160 company/models.py:813 -#: machine/models.py:39 part/admin.py:88 part/models.py:1045 -#: plugin/models.py:56 templates/js/translated/company.js:523 +#: common/models.py:2734 company/models.py:160 company/models.py:814 +#: machine/models.py:39 part/admin.py:88 part/models.py:1088 +#: plugin/models.py:65 templates/js/translated/company.js:523 #: templates/js/translated/table_filters.js:135 #: templates/js/translated/table_filters.js:219 #: templates/js/translated/table_filters.js:492 @@ -3586,135 +3464,135 @@ msgstr "Name für diesen Webhook" msgid "Active" msgstr "Aktiv" -#: common/models.py:2711 +#: common/models.py:2734 msgid "Is this webhook active" msgstr "Ist dieser Webhook aktiv" -#: common/models.py:2727 users/models.py:159 +#: common/models.py:2750 users/models.py:159 msgid "Token" -msgstr "" +msgstr "Token" -#: common/models.py:2728 +#: common/models.py:2751 msgid "Token for access" msgstr "Token für Zugang" -#: common/models.py:2736 +#: common/models.py:2759 msgid "Secret" msgstr "Geheimnis" -#: common/models.py:2737 +#: common/models.py:2760 msgid "Shared secret for HMAC" msgstr "Shared Secret für HMAC" -#: common/models.py:2845 +#: common/models.py:2868 msgid "Message ID" msgstr "Nachrichten-ID" -#: common/models.py:2846 +#: common/models.py:2869 msgid "Unique identifier for this message" msgstr "Eindeutige Kennung für diese Nachricht" -#: common/models.py:2854 +#: common/models.py:2877 msgid "Host" -msgstr "" +msgstr "Host" -#: common/models.py:2855 +#: common/models.py:2878 msgid "Host from which this message was received" msgstr "Host von dem diese Nachricht empfangen wurde" -#: common/models.py:2863 +#: common/models.py:2886 msgid "Header" msgstr "Kopfzeile" -#: common/models.py:2864 +#: common/models.py:2887 msgid "Header of this message" msgstr "Header dieser Nachricht" -#: common/models.py:2871 +#: common/models.py:2894 msgid "Body" -msgstr "" +msgstr "Body" -#: common/models.py:2872 +#: common/models.py:2895 msgid "Body of this message" msgstr "Body dieser Nachricht" -#: common/models.py:2882 +#: common/models.py:2905 msgid "Endpoint on which this message was received" msgstr "Endpunkt, über den diese Nachricht empfangen wurde" -#: common/models.py:2887 +#: common/models.py:2910 msgid "Worked on" msgstr "Bearbeitet" -#: common/models.py:2888 +#: common/models.py:2911 msgid "Was the work on this message finished?" msgstr "Wurde die Arbeit an dieser Nachricht abgeschlossen?" -#: common/models.py:3014 +#: common/models.py:3037 msgid "Id" msgstr "ID" -#: common/models.py:3016 templates/js/translated/company.js:965 +#: common/models.py:3039 templates/js/translated/company.js:965 #: templates/js/translated/news.js:44 msgid "Title" msgstr "Titel" -#: common/models.py:3020 templates/js/translated/news.js:60 +#: common/models.py:3043 templates/js/translated/news.js:60 msgid "Published" msgstr "Veröffentlicht" -#: common/models.py:3022 templates/InvenTree/settings/plugin_settings.html:32 +#: common/models.py:3045 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:3024 templates/js/translated/news.js:52 +#: common/models.py:3047 templates/js/translated/news.js:52 msgid "Summary" msgstr "Zusammenfassung" -#: common/models.py:3027 +#: common/models.py:3050 msgid "Read" msgstr "Gelesen" -#: common/models.py:3027 +#: common/models.py:3050 msgid "Was this news item read?" msgstr "Wurde diese Nachricht gelesen?" -#: common/models.py:3044 company/models.py:156 part/models.py:929 +#: common/models.py:3067 company/models.py:156 part/models.py:972 #: 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 +#: report/templates/report/inventree_return_order_report.html:35 #: stock/templates/stock/item_base.html:133 templates/503.html:31 #: templates/hover_image.html:7 templates/hover_image.html:9 #: templates/modals.html:6 msgid "Image" msgstr "Bild" -#: common/models.py:3044 +#: common/models.py:3067 msgid "Image file" msgstr "Bilddatei" -#: common/models.py:3086 +#: common/models.py:3109 msgid "Unit name must be a valid identifier" msgstr "Einheitsname muss eine gültige Kennung sein" -#: common/models.py:3105 +#: common/models.py:3128 msgid "Unit name" msgstr "Einheitsname" -#: common/models.py:3112 templates/InvenTree/settings/settings_staff_js.html:75 +#: common/models.py:3135 templates/InvenTree/settings/settings_staff_js.html:75 msgid "Symbol" -msgstr "" +msgstr "Symbol" -#: common/models.py:3113 +#: common/models.py:3136 msgid "Optional unit symbol" msgstr "Optionales Einheitssymbol" -#: common/models.py:3120 templates/InvenTree/settings/settings_staff_js.html:71 +#: common/models.py:3143 templates/InvenTree/settings/settings_staff_js.html:71 msgid "Definition" -msgstr "" +msgstr "Definition" -#: common/models.py:3121 +#: common/models.py:3144 msgid "Unit definition" msgstr "Einheitsdefinition" @@ -3736,7 +3614,7 @@ msgstr "{verbose_name} storniert" msgid "A order that is assigned to you was canceled" msgstr "Eine Bestellung, die Ihnen zugewiesen war, wurde storniert" -#: common/notifications.py:330 common/notifications.py:337 order/api.py:468 +#: common/notifications.py:330 common/notifications.py:337 order/api.py:472 msgid "Items Received" msgstr "Artikel erhalten" @@ -3752,63 +3630,63 @@ msgstr "Artikel wurden aus einer Rücksendung erhalten" msgid "Error raised by plugin" msgstr "Fehler in Plugin aufgetreten" -#: common/serializers.py:333 +#: common/serializers.py:366 msgid "Is Running" msgstr "Wird ausgeführt" -#: common/serializers.py:339 +#: common/serializers.py:372 msgid "Pending Tasks" msgstr "Anstehende Aufgaben" -#: common/serializers.py:345 +#: common/serializers.py:378 msgid "Scheduled Tasks" msgstr "Geplante Aufgaben" -#: common/serializers.py:351 +#: common/serializers.py:384 msgid "Failed Tasks" msgstr "Fehlgeschlagene Aufgaben" -#: common/serializers.py:366 +#: common/serializers.py:399 msgid "Task ID" msgstr "Aufgabe-ID" -#: common/serializers.py:366 +#: common/serializers.py:399 msgid "Unique task ID" msgstr "Eindeutige Aufgaben-ID" -#: common/serializers.py:368 +#: common/serializers.py:401 msgid "Lock" msgstr "Sperren" -#: common/serializers.py:368 +#: common/serializers.py:401 msgid "Lock time" msgstr "Sperrzeit" -#: common/serializers.py:370 +#: common/serializers.py:403 msgid "Task name" msgstr "Aufgabenname" -#: common/serializers.py:372 +#: common/serializers.py:405 msgid "Function" msgstr "Funktion" -#: common/serializers.py:372 +#: common/serializers.py:405 msgid "Function name" msgstr "Funktionsname" -#: common/serializers.py:374 +#: common/serializers.py:407 msgid "Arguments" msgstr "Parameter" -#: common/serializers.py:374 +#: common/serializers.py:407 msgid "Task arguments" msgstr "Aufgaben-Parameter" -#: common/serializers.py:377 +#: common/serializers.py:410 msgid "Keyword Arguments" msgstr "Schlüsselwort Parameter" -#: common/serializers.py:377 +#: common/serializers.py:410 msgid "Task keyword arguments" msgstr "Schlüsselwort Parameter für Aufgaben" @@ -3852,23 +3730,23 @@ msgstr "Vorheriger Schritt" #: company/api.py:164 msgid "Part is Active" -msgstr "" +msgstr "Teil ist aktiv" #: company/api.py:168 msgid "Manufacturer is Active" -msgstr "" +msgstr "Hersteller ist aktiv" #: company/api.py:317 msgid "Supplier Part is Active" -msgstr "" +msgstr "Lieferantenteil ist aktiv" #: company/api.py:321 msgid "Internal Part is Active" -msgstr "" +msgstr "Internes Teil ist aktiv" #: company/api.py:325 msgid "Supplier is Active" -msgstr "" +msgstr "Lieferant ist aktiv" #: company/models.py:114 msgid "Company description" @@ -3882,7 +3760,7 @@ msgstr "Firmenbeschreibung" #: templates/InvenTree/settings/plugin_settings.html:54 #: templates/js/translated/company.js:532 msgid "Website" -msgstr "" +msgstr "Webseite" #: company/models.py:120 msgid "Company website URL" @@ -3901,9 +3779,9 @@ msgid "Contact email address" msgstr "Kontakt-Email" #: company/models.py:139 company/templates/company/company_base.html:145 -#: order/models.py:331 order/templates/order/order_base.html:203 +#: order/models.py:343 order/templates/order/order_base.html:203 #: order/templates/order/return_order_base.html:174 -#: order/templates/order/sales_order_base.html:214 +#: order/templates/order/sales_order_base.html:218 msgid "Contact" msgstr "Kontakt" @@ -3917,7 +3795,7 @@ msgstr "Link auf externe Firmeninformation" #: company/models.py:160 msgid "Is this company active?" -msgstr "" +msgstr "Ist dieses Unternehmen aktiv?" #: company/models.py:165 msgid "is customer" @@ -3949,7 +3827,7 @@ msgstr "Standard-Währung für diese Firma" #: company/models.py:273 company/models.py:382 #: company/templates/company/company_base.html:8 -#: company/templates/company/company_base.html:12 stock/api.py:776 +#: company/templates/company/company_base.html:12 stock/api.py:812 #: templates/InvenTree/search.html:178 templates/js/translated/company.js:496 msgid "Company" msgstr "Firma" @@ -4041,19 +3919,19 @@ msgstr "Versandnotizen für interne Verwendung" msgid "Link to address information (external)" msgstr "Link zu Adressinformationen (extern)" -#: company/models.py:489 company/models.py:791 stock/models.py:751 -#: stock/serializers.py:266 stock/templates/stock/item_base.html:142 +#: company/models.py:489 company/models.py:792 stock/models.py:768 +#: stock/serializers.py:395 stock/templates/stock/item_base.html:142 #: templates/js/translated/bom.js:622 msgid "Base Part" msgstr "Basisteil" -#: company/models.py:491 company/models.py:793 +#: company/models.py:491 company/models.py:794 msgid "Select part" msgstr "Teil auswählen" #: company/models.py:500 company/templates/company/company_base.html:82 #: company/templates/company/manufacturer_part.html:90 -#: company/templates/company/supplier_part.html:145 part/serializers.py:515 +#: company/templates/company/supplier_part.html:145 part/serializers.py:530 #: stock/templates/stock/item_base.html:207 #: templates/js/translated/company.js:507 #: templates/js/translated/company.js:1118 @@ -4068,15 +3946,15 @@ msgid "Select manufacturer" msgstr "Hersteller auswählen" #: company/models.py:507 company/templates/company/manufacturer_part.html:101 -#: company/templates/company/supplier_part.html:153 part/serializers.py:525 +#: company/templates/company/supplier_part.html:153 part/serializers.py:540 #: templates/js/translated/company.js:351 #: templates/js/translated/company.js:1117 #: templates/js/translated/company.js:1312 #: templates/js/translated/company.js:1630 templates/js/translated/part.js:1800 -#: templates/js/translated/purchase_order.js:1852 -#: templates/js/translated/purchase_order.js:2054 +#: templates/js/translated/purchase_order.js:1851 +#: templates/js/translated/purchase_order.js:2053 msgid "MPN" -msgstr "" +msgstr "MPN" #: company/models.py:508 msgid "Manufacturer Part Number" @@ -4086,61 +3964,60 @@ msgstr "Hersteller-Teilenummer" msgid "URL for external manufacturer part link" msgstr "Externe URL für das Herstellerteil" -#: company/models.py:523 +#: company/models.py:524 msgid "Manufacturer part description" msgstr "Teilbeschreibung des Herstellers" -#: company/models.py:580 company/models.py:607 company/models.py:823 +#: company/models.py:581 company/models.py:608 company/models.py:824 #: company/templates/company/manufacturer_part.html:7 #: company/templates/company/manufacturer_part.html:24 #: stock/templates/stock/item_base.html:217 msgid "Manufacturer Part" msgstr "Herstellerteil" -#: company/models.py:614 +#: company/models.py:615 msgid "Parameter name" msgstr "Parametername" -#: company/models.py:620 -#: report/templates/report/inventree_test_report_base.html:104 -#: stock/models.py:2436 templates/js/translated/company.js:1166 +#: company/models.py:621 report/templates/report/inventree_test_report.html:104 +#: stock/models.py:2429 templates/js/translated/company.js:1166 #: templates/js/translated/company.js:1419 templates/js/translated/part.js:1492 -#: templates/js/translated/stock.js:1519 +#: templates/js/translated/stock.js:1522 msgid "Value" msgstr "Wert" -#: company/models.py:621 +#: company/models.py:622 msgid "Parameter value" msgstr "Parameterwert" -#: company/models.py:628 company/templates/company/supplier_part.html:168 -#: part/admin.py:57 part/models.py:1009 part/models.py:3623 +#: company/models.py:629 company/templates/company/supplier_part.html:168 +#: part/admin.py:57 part/models.py:1052 part/models.py:3666 #: part/templates/part/part_base.html:284 #: templates/js/translated/company.js:1425 templates/js/translated/part.js:1511 -#: templates/js/translated/part.js:1615 templates/js/translated/part.js:2370 +#: templates/js/translated/part.js:1615 templates/js/translated/part.js:2369 msgid "Units" msgstr "Einheiten" -#: company/models.py:629 +#: company/models.py:630 msgid "Parameter units" msgstr "Parametereinheit" -#: company/models.py:731 +#: company/models.py:732 msgid "Pack units must be compatible with the base part units" msgstr "Packeinheiten müssen mit den Basisteileinheiten kompatibel sein" -#: company/models.py:738 +#: company/models.py:739 msgid "Pack units must be greater than zero" msgstr "Packeinheiten müssen größer als Null sein" -#: company/models.py:752 +#: company/models.py:753 msgid "Linked manufacturer part must reference the same base part" msgstr "Verlinktes Herstellerteil muss dasselbe Basisteil referenzieren" -#: company/models.py:801 company/templates/company/company_base.html:87 -#: company/templates/company/supplier_part.html:129 order/models.py:465 +#: company/models.py:802 company/templates/company/company_base.html:87 +#: company/templates/company/supplier_part.html:129 order/models.py:486 #: order/templates/order/order_base.html:136 part/bom.py:272 part/bom.py:310 -#: part/serializers.py:499 plugin/builtin/suppliers/digikey.py:25 +#: part/serializers.py:514 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 @@ -4148,97 +4025,97 @@ msgstr "Verlinktes Herstellerteil muss dasselbe Basisteil referenzieren" #: templates/js/translated/company.js:511 #: templates/js/translated/company.js:1584 templates/js/translated/part.js:1768 #: templates/js/translated/pricing.js:498 -#: templates/js/translated/purchase_order.js:1690 +#: templates/js/translated/purchase_order.js:1689 #: templates/js/translated/table_filters.js:804 msgid "Supplier" msgstr "Zulieferer" -#: company/models.py:802 +#: company/models.py:803 msgid "Select supplier" msgstr "Zulieferer auswählen" -#: company/models.py:808 part/serializers.py:510 +#: company/models.py:809 part/serializers.py:525 msgid "Supplier stock keeping unit" msgstr "Lagerbestandseinheit (SKU) des Zulieferers" -#: company/models.py:814 +#: company/models.py:815 msgid "Is this supplier part active?" -msgstr "" +msgstr "Ist dieser Lieferantenteil aktiv?" -#: company/models.py:824 +#: company/models.py:825 msgid "Select manufacturer part" msgstr "Herstellerteil auswählen" -#: company/models.py:831 +#: company/models.py:832 msgid "URL for external supplier part link" msgstr "Teil-URL des Zulieferers" -#: company/models.py:839 +#: company/models.py:841 msgid "Supplier part description" msgstr "Zuliefererbeschreibung des Teils" -#: company/models.py:846 company/templates/company/supplier_part.html:187 -#: part/admin.py:418 part/models.py:4070 part/templates/part/upload_bom.html:59 +#: company/models.py:848 company/templates/company/supplier_part.html:187 +#: part/admin.py:420 part/models.py:4113 part/templates/part/upload_bom.html:59 #: 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 +#: report/templates/report/inventree_purchase_order_report.html:32 +#: report/templates/report/inventree_return_order_report.html:27 +#: report/templates/report/inventree_sales_order_report.html:32 +#: report/templates/report/inventree_stock_location_report.html:105 +#: stock/serializers.py:708 msgid "Note" msgstr "Notiz" -#: company/models.py:855 part/models.py:1967 +#: company/models.py:857 part/models.py:2010 msgid "base cost" msgstr "Basiskosten" -#: company/models.py:856 part/models.py:1968 +#: company/models.py:858 part/models.py:2011 msgid "Minimum charge (e.g. stocking fee)" msgstr "Mindestpreis" -#: company/models.py:863 company/templates/company/supplier_part.html:160 -#: stock/admin.py:224 stock/models.py:782 stock/serializers.py:1350 +#: company/models.py:865 company/templates/company/supplier_part.html:160 +#: stock/admin.py:224 stock/models.py:799 stock/serializers.py:1479 #: stock/templates/stock/item_base.html:240 #: templates/js/translated/company.js:1646 -#: templates/js/translated/stock.js:2423 +#: templates/js/translated/stock.js:2424 msgid "Packaging" msgstr "Verpackungen" -#: company/models.py:864 +#: company/models.py:866 msgid "Part packaging" msgstr "Teile-Verpackungen" -#: company/models.py:869 templates/js/translated/company.js:1651 +#: company/models.py:871 templates/js/translated/company.js:1651 #: 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 +#: templates/js/translated/purchase_order.js:2084 +#: templates/js/translated/purchase_order.js:2101 msgid "Pack Quantity" msgstr "Packmenge" -#: company/models.py:871 +#: company/models.py:873 msgid "Total quantity supplied in a single pack. Leave empty for single items." msgstr "Gesamtmenge, die in einer einzelnen Packung geliefert wird. Für Einzelstücke leer lassen." -#: company/models.py:890 part/models.py:1974 +#: company/models.py:892 part/models.py:2017 msgid "multiple" msgstr "Vielfache" -#: company/models.py:891 +#: company/models.py:893 msgid "Order multiple" msgstr "Mehrere bestellen" -#: company/models.py:903 +#: company/models.py:905 msgid "Quantity available from supplier" msgstr "Verfügbare Menge von Lieferanten" -#: company/models.py:909 +#: company/models.py:911 msgid "Availability Updated" msgstr "Verfügbarkeit aktualisiert" -#: company/models.py:910 +#: company/models.py:912 msgid "Date of last update of availability data" msgstr "Datum des letzten Updates der Verfügbarkeitsdaten" @@ -4257,7 +4134,7 @@ msgstr "Auf Lager" #: part/templates/part/part_base.html:146 #: templates/js/translated/company.js:1287 #: templates/js/translated/company.js:1575 -#: templates/js/translated/model_renderers.js:306 +#: templates/js/translated/model_renderers.js:312 #: templates/js/translated/part.js:814 templates/js/translated/part.js:1218 msgid "Inactive" msgstr "Inaktiv" @@ -4293,11 +4170,11 @@ msgstr "Firma löschen" #: 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 +#: report/templates/report/inventree_build_order_report.html:98 +#: report/templates/report/inventree_purchase_order_report.html:40 +#: report/templates/report/inventree_sales_order_report.html:40 +#: report/templates/report/inventree_test_report.html:84 +#: report/templates/report/inventree_test_report.html:163 msgid "Part image" msgstr "Artikelbild" @@ -4316,15 +4193,15 @@ msgstr "Bild von URL herunterladen" msgid "Delete image" msgstr "Bild löschen" -#: company/templates/company/company_base.html:92 order/models.py:910 -#: order/models.py:2008 order/templates/order/return_order_base.html:131 -#: order/templates/order/sales_order_base.html:144 stock/models.py:804 -#: stock/models.py:805 stock/serializers.py:1100 +#: company/templates/company/company_base.html:92 order/models.py:940 +#: order/models.py:2068 order/templates/order/return_order_base.html:131 +#: order/templates/order/sales_order_base.html:148 stock/models.py:821 +#: stock/models.py:822 stock/serializers.py:1229 #: stock/templates/stock/item_base.html:405 #: templates/email/overdue_sales_order.html:16 #: templates/js/translated/company.js:503 -#: templates/js/translated/return_order.js:296 -#: templates/js/translated/sales_order.js:784 +#: templates/js/translated/return_order.js:295 +#: templates/js/translated/sales_order.js:820 #: templates/js/translated/stock.js:2959 #: templates/js/translated/table_filters.js:808 msgid "Customer" @@ -4334,10 +4211,10 @@ msgstr "Kunde" msgid "Uses default currency" msgstr "verwendet Standard-Währung" -#: company/templates/company/company_base.html:124 order/models.py:341 +#: company/templates/company/company_base.html:124 order/models.py:353 #: order/templates/order/order_base.html:210 #: order/templates/order/return_order_base.html:181 -#: order/templates/order/sales_order_base.html:221 +#: order/templates/order/sales_order_base.html:225 msgid "Address" msgstr "Adresse" @@ -4346,7 +4223,7 @@ msgid "Phone" msgstr "Telefon" #: company/templates/company/company_base.html:211 -#: part/templates/part/part_base.html:528 +#: part/templates/part/part_base.html:527 msgid "Remove Image" msgstr "Bild entfernen" @@ -4355,19 +4232,19 @@ msgid "Remove associated image from this company" msgstr "Verknüpftes Bild von dieser Firma entfernen" #: company/templates/company/company_base.html:214 -#: part/templates/part/part_base.html:531 +#: part/templates/part/part_base.html:530 #: templates/InvenTree/settings/user.html:88 #: templates/InvenTree/settings/user_sso.html:43 msgid "Remove" msgstr "Entfernen" #: company/templates/company/company_base.html:243 -#: part/templates/part/part_base.html:560 +#: part/templates/part/part_base.html:559 msgid "Upload Image" msgstr "Bild hochladen" #: company/templates/company/company_base.html:258 -#: part/templates/part/part_base.html:614 +#: part/templates/part/part_base.html:613 msgid "Download Image" msgstr "Bild herunterladen" @@ -4520,7 +4397,7 @@ msgid "Delete manufacturer part" msgstr "Herstellerteil löschen" #: company/templates/company/manufacturer_part.html:65 -#: company/templates/company/supplier_part.html:97 order/api.py:454 +#: company/templates/company/supplier_part.html:97 order/api.py:458 msgid "Internal Part" msgstr "Internes Teil" @@ -4530,7 +4407,7 @@ msgstr "Keine Herstellerdaten verfügbar" #: company/templates/company/manufacturer_part.html:119 #: company/templates/company/supplier_part.html:15 company/views.py:31 -#: part/admin.py:122 part/serializers.py:821 +#: part/admin.py:122 part/serializers.py:836 #: part/templates/part/part_sidebar.html:33 templates/InvenTree/search.html:190 #: templates/navbar.html:48 msgid "Suppliers" @@ -4580,11 +4457,11 @@ msgid "Addresses" msgstr "Adressen" #: company/templates/company/supplier_part.html:7 -#: company/templates/company/supplier_part.html:24 order/api.py:448 -#: stock/models.py:762 stock/templates/stock/item_base.html:233 +#: company/templates/company/supplier_part.html:24 order/api.py:452 +#: stock/models.py:779 stock/templates/stock/item_base.html:233 #: templates/js/translated/company.js:1600 #: templates/js/translated/purchase_order.js:752 -#: templates/js/translated/stock.js:2279 +#: templates/js/translated/stock.js:2280 msgid "Supplier Part" msgstr "Zuliefererteil" @@ -4630,11 +4507,11 @@ 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:509 +#: part/bom.py:311 part/serializers.py:524 #: 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 +#: templates/js/translated/purchase_order.js:1850 +#: templates/js/translated/purchase_order.js:2028 msgid "SKU" msgstr "Lieferanten-Teilenummer" @@ -4643,12 +4520,12 @@ msgid "Supplier Part Stock" msgstr "Zulieferer-Bestand" #: company/templates/company/supplier_part.html:209 -#: part/templates/part/detail.html:24 stock/templates/stock/location.html:199 +#: part/templates/part/detail.html:24 stock/templates/stock/location.html:206 msgid "Create new stock item" msgstr "Neuen Lagerartikel hinzufügen" #: company/templates/company/supplier_part.html:210 -#: part/templates/part/detail.html:25 stock/templates/stock/location.html:200 +#: part/templates/part/detail.html:25 stock/templates/stock/location.html:207 #: templates/js/translated/stock.js:537 msgid "New Stock Item" msgstr "Neuer Lagerartikel" @@ -4680,13 +4557,13 @@ msgid "Update Part Availability" msgstr "Verfügbarkeit der Teile aktualisieren" #: company/templates/company/supplier_part_sidebar.html:5 -#: part/serializers.py:820 part/stocktake.py:223 +#: part/serializers.py:835 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/serializers.py:916 stock/serializers.py:1080 #: stock/templates/stock/location.html:170 -#: stock/templates/stock/location.html:184 -#: stock/templates/stock/location.html:196 +#: stock/templates/stock/location.html:191 +#: stock/templates/stock/location.html:203 #: stock/templates/stock/location_sidebar.html:7 #: templates/InvenTree/search.html:155 templates/js/translated/part.js:1060 #: templates/js/translated/search.js:172 templates/js/translated/stock.js:2766 @@ -4723,126 +4600,52 @@ msgstr "Firmen" msgid "New Company" msgstr "Neue Firma" -#: label/api.py:247 -msgid "Error printing label" -msgstr "Fehler beim Drucken des Labels" +#: generic/states/tests.py:18 order/status_codes.py:13 +msgid "Placed" +msgstr "Platziert" -#: label/models.py:120 -msgid "Label name" -msgstr "Label Name" - -#: label/models.py:128 -msgid "Label description" -msgstr "Label Beschreibung" - -#: label/models.py:136 -msgid "Label" -msgstr "" - -#: label/models.py:137 -msgid "Label template file" -msgstr "Label-Vorlage-Datei" - -#: label/models.py:143 part/models.py:3494 report/models.py:324 -#: templates/js/translated/part.js:2900 -#: templates/js/translated/table_filters.js:481 -msgid "Enabled" -msgstr "Aktiviert" - -#: label/models.py:144 -msgid "Label template is enabled" -msgstr "Label-Vorlage ist aktiviert" - -#: label/models.py:149 -msgid "Width [mm]" -msgstr "Breite [mm]" - -#: label/models.py:150 -msgid "Label width, specified in mm" -msgstr "Label-Breite in mm" - -#: label/models.py:156 -msgid "Height [mm]" -msgstr "Höhe [mm]" - -#: label/models.py:157 -msgid "Label height, specified in mm" -msgstr "Label-Höhe in mm" - -#: label/models.py:163 report/models.py:317 -msgid "Filename Pattern" -msgstr "Dateinamen-Muster" - -#: label/models.py:164 -msgid "Pattern for generating label filenames" -msgstr "Muster für die Erstellung von Label-Dateinamen" - -#: 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 "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:345 report/models.py:496 -#: report/models.py:532 report/models.py:568 report/models.py:750 -msgid "Filters" -msgstr "Filter" - -#: 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 "QR-Code" - -#: label/templates/label/part/part_label_code128.html:31 -#: label/templates/label/stocklocation/qr_and_text.html:31 -#: templates/qr_code.html:7 -msgid "QR code" -msgstr "QR-Code" - -#: machine/machine_types/label_printer.py:217 +#: machine/machine_types/label_printer.py:218 msgid "Copies" msgstr "Kopien" -#: machine/machine_types/label_printer.py:218 +#: machine/machine_types/label_printer.py:219 msgid "Number of copies to print for each label" msgstr "Anzahl der zu druckenden Kopien für jedes Label" -#: machine/machine_types/label_printer.py:233 +#: machine/machine_types/label_printer.py:234 msgid "Connected" msgstr "Verbunden" -#: machine/machine_types/label_printer.py:234 order/api.py:1511 -#: templates/js/translated/sales_order.js:1042 +#: machine/machine_types/label_printer.py:235 order/api.py:1515 +#: templates/js/translated/sales_order.js:1078 msgid "Unknown" msgstr "Unbekannt" -#: machine/machine_types/label_printer.py:235 +#: machine/machine_types/label_printer.py:236 msgid "Printing" msgstr "Drucken" -#: machine/machine_types/label_printer.py:236 +#: machine/machine_types/label_printer.py:237 msgid "No media" msgstr "Keine Medien" -#: machine/machine_types/label_printer.py:237 +#: machine/machine_types/label_printer.py:238 msgid "Disconnected" msgstr "Verbindung getrennt" -#: machine/machine_types/label_printer.py:244 +#: machine/machine_types/label_printer.py:245 msgid "Label Printer" msgstr "Etikettendrucker" -#: machine/machine_types/label_printer.py:245 +#: machine/machine_types/label_printer.py:246 msgid "Directly print labels for various items." msgstr "Drucken Sie Etiketten direkt für verschiedene Artikel." -#: machine/machine_types/label_printer.py:251 +#: machine/machine_types/label_printer.py:252 msgid "Printer Location" msgstr "Druckerstandort" -#: machine/machine_types/label_printer.py:252 +#: machine/machine_types/label_printer.py:253 msgid "Scope the printer to a specific location" msgstr "Den Drucker an einen bestimmten Ort aufstellen" @@ -4903,63 +4706,64 @@ msgid "Config type" msgstr "Konfigurationstyp" #: 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 +#: report/templates/report/inventree_purchase_order_report.html:31 +#: report/templates/report/inventree_sales_order_report.html:31 #: templates/js/translated/order.js:327 -#: templates/js/translated/purchase_order.js:2126 -#: templates/js/translated/sales_order.js:1847 +#: templates/js/translated/purchase_order.js:2125 +#: templates/js/translated/sales_order.js:1883 msgid "Total Price" msgstr "Gesamtpreis" -#: order/api.py:157 order/templates/order/order_base.html:118 +#: order/api.py:161 order/serializers.py:91 +#: order/templates/order/order_base.html:118 #: order/templates/order/return_order_base.html:113 -#: order/templates/order/sales_order_base.html:118 +#: order/templates/order/sales_order_base.html:122 msgid "Order Status" msgstr "Bestellstatus" -#: order/api.py:161 templates/js/translated/table_filters.js:194 +#: order/api.py:165 templates/js/translated/table_filters.js:194 #: templates/js/translated/table_filters.js:779 msgid "Has Pricing" -msgstr "" +msgstr "Hat Preise" -#: order/api.py:236 +#: order/api.py:240 msgid "No matching purchase order found" msgstr "Keine passende Bestellung gefunden" -#: order/api.py:433 order/api.py:813 order/models.py:1382 order/models.py:1489 -#: order/models.py:1535 order/models.py:1649 order/models.py:1803 -#: order/models.py:2207 order/models.py:2258 -#: templates/js/translated/sales_order.js:1488 +#: order/api.py:437 order/api.py:817 order/models.py:1431 order/models.py:1540 +#: order/models.py:1586 order/models.py:1700 order/models.py:1854 +#: order/models.py:2267 order/models.py:2318 +#: templates/js/translated/sales_order.js:1524 msgid "Order" msgstr "Bestellung" -#: order/api.py:437 order/api.py:834 +#: order/api.py:441 order/api.py:838 msgid "Order Complete" -msgstr "" +msgstr "Bestellung abgeschlossen" -#: order/api.py:458 +#: order/api.py:462 msgid "Order Pending" -msgstr "" +msgstr "Bestellung ausstehend" -#: order/api.py:1505 order/models.py:1383 order/models.py:1490 -#: order/templates/order/order_base.html:9 +#: order/api.py:1509 order/models.py:380 order/models.py:1432 +#: order/models.py:1541 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 +#: report/templates/report/inventree_purchase_order_report.html:14 +#: stock/serializers.py:119 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 +#: templates/js/translated/purchase_order.js:1673 +#: templates/js/translated/stock.js:2260 templates/js/translated/stock.js:2907 msgid "Purchase Order" msgstr "Bestellung" -#: order/api.py:1509 order/models.py:2208 order/models.py:2259 -#: order/templates/order/return_order_base.html:9 +#: order/api.py:1513 order/models.py:2017 order/models.py:2268 +#: order/models.py:2319 order/templates/order/return_order_base.html:9 #: order/templates/order/return_order_base.html:28 -#: report/templates/report/inventree_return_order_report_base.html:13 -#: templates/js/translated/return_order.js:281 +#: report/templates/report/inventree_return_order_report.html:13 +#: templates/js/translated/return_order.js:280 #: templates/js/translated/stock.js:2941 msgid "Return Order" msgstr "Rücksendeauftrag" @@ -4976,517 +4780,577 @@ msgstr "Auftragswährung" msgid "Currency for this order (leave blank to use company default)" msgstr "Währung für diesen Auftrag (leer lassen, um Firmenstandard zu verwenden)" -#: order/models.py:246 +#: order/models.py:247 msgid "Contact does not match selected company" msgstr "Kontakt stimmt nicht mit der ausgewählten Firma überein" -#: order/models.py:278 +#: order/models.py:290 msgid "Order description (optional)" msgstr "Auftragsbeschreibung (optional)" -#: order/models.py:287 +#: order/models.py:299 msgid "Select project code for this order" msgstr "Projektcode für diesen Auftrag auswählen" -#: order/models.py:291 order/models.py:1288 order/models.py:1702 +#: order/models.py:303 order/models.py:1337 order/models.py:1753 msgid "Link to external page" msgstr "Link auf externe Seite" -#: order/models.py:299 +#: order/models.py:311 msgid "Expected date for order delivery. Order will be overdue after this date." msgstr "Geplantes Lieferdatum für Auftrag." -#: order/models.py:313 +#: order/models.py:325 msgid "Created By" msgstr "Erstellt von" -#: order/models.py:321 +#: order/models.py:333 msgid "User or group responsible for this order" msgstr "Nutzer oder Gruppe der/die für diesen Auftrag zuständig ist/sind" -#: order/models.py:332 +#: order/models.py:344 msgid "Point of contact for this order" msgstr "Ansprechpartner für diesen Auftrag" -#: order/models.py:342 +#: order/models.py:354 msgid "Company address for this order" msgstr "Firmenadresse für diesen Auftrag" -#: order/models.py:443 order/models.py:899 +#: order/models.py:464 order/models.py:929 msgid "Order reference" msgstr "Bestell-Referenz" -#: order/models.py:451 order/models.py:923 +#: order/models.py:472 order/models.py:953 msgid "Purchase order status" msgstr "Bestellungs-Status" -#: order/models.py:466 +#: order/models.py:487 msgid "Company from which the items are being ordered" msgstr "Firma bei der die Teile bestellt werden" -#: order/models.py:477 order/templates/order/order_base.html:148 -#: templates/js/translated/purchase_order.js:1703 +#: order/models.py:498 order/templates/order/order_base.html:148 +#: templates/js/translated/purchase_order.js:1702 msgid "Supplier Reference" msgstr "Zulieferer-Referenz" -#: order/models.py:478 +#: order/models.py:499 msgid "Supplier order reference code" msgstr "Zulieferer Bestellreferenz" -#: order/models.py:487 +#: order/models.py:508 msgid "received by" msgstr "Empfangen von" -#: order/models.py:493 order/models.py:2034 +#: order/models.py:514 order/models.py:2094 msgid "Issue Date" msgstr "Aufgabedatum" -#: order/models.py:494 order/models.py:2035 +#: order/models.py:515 order/models.py:2095 msgid "Date order was issued" msgstr "Datum an dem die Bestellung aufgegeben wurde" -#: order/models.py:501 order/models.py:2042 +#: order/models.py:522 order/models.py:2102 msgid "Date order was completed" msgstr "Datum an dem der Auftrag fertigstellt wurde" -#: order/models.py:545 +#: order/models.py:566 msgid "Part supplier must match PO supplier" msgstr "Teile-Zulieferer muss dem Zulieferer der Bestellung entsprechen" -#: order/models.py:739 +#: order/models.py:760 msgid "Quantity must be a positive number" msgstr "Anzahl muss eine positive Zahl sein" -#: order/models.py:911 +#: order/models.py:941 msgid "Company to which the items are being sold" msgstr "Firma an die die Teile verkauft werden" -#: order/models.py:934 order/models.py:2027 +#: order/models.py:964 order/models.py:2087 msgid "Customer Reference " msgstr "Kundenreferenz" -#: order/models.py:935 order/models.py:2028 +#: order/models.py:965 order/models.py:2088 msgid "Customer order reference code" msgstr "Bestellreferenz" -#: order/models.py:939 order/models.py:1656 -#: templates/js/translated/sales_order.js:843 -#: templates/js/translated/sales_order.js:1024 +#: order/models.py:969 order/models.py:1707 +#: templates/js/translated/sales_order.js:879 +#: templates/js/translated/sales_order.js:1060 msgid "Shipment Date" msgstr "Versanddatum" -#: order/models.py:948 +#: order/models.py:978 msgid "shipped by" msgstr "Versand von" -#: order/models.py:999 -msgid "Order cannot be completed as no parts have been assigned" -msgstr "Auftrag kann nicht abgeschlossen werden, da keine Teile zugewiesen wurden" +#: order/models.py:1027 +#, fuzzy +#| msgid "Build output is already completed" +msgid "Order is already complete" +msgstr "Endprodukt bereits hergstellt" -#: order/models.py:1004 +#: order/models.py:1030 +#, fuzzy +#| msgid "Order cannot be cancelled" +msgid "Order is already cancelled" +msgstr "Bestellung kann nicht verworfen werden" + +#: order/models.py:1034 msgid "Only an open order can be marked as complete" msgstr "Nur ein offener Auftrag kann als abgeschlossen markiert werden" -#: order/models.py:1008 templates/js/translated/sales_order.js:506 +#: order/models.py:1038 msgid "Order cannot be completed as there are incomplete shipments" msgstr "Auftrag kann nicht abgeschlossen werden, da unvollständige Sendungen vorhanden sind" -#: order/models.py:1013 +#: order/models.py:1043 msgid "Order cannot be completed as there are incomplete line items" msgstr "Auftrag kann nicht abgeschlossen werden, da es unvollständige Positionen gibt" -#: order/models.py:1260 +#: order/models.py:1309 msgid "Item quantity" msgstr "Anzahl" -#: order/models.py:1277 +#: order/models.py:1326 msgid "Line item reference" msgstr "Position - Referenz" -#: order/models.py:1284 +#: order/models.py:1333 msgid "Line item notes" msgstr "Position - Notizen" -#: order/models.py:1296 +#: order/models.py:1345 msgid "Target date for this line item (leave blank to use the target date from the order)" msgstr "Zieldatum für diesen Einzelposten (leer lassen, um das Zieldatum des Auftrags zu verwenden)" -#: order/models.py:1317 +#: order/models.py:1366 msgid "Line item description (optional)" msgstr "Positionsbeschreibung (optional)" -#: order/models.py:1323 +#: order/models.py:1372 msgid "Context" msgstr "Kontext" -#: order/models.py:1324 +#: order/models.py:1373 msgid "Additional context for this line" msgstr "Zusätzlicher Kontext für diese Zeile" -#: order/models.py:1334 +#: order/models.py:1383 msgid "Unit price" msgstr "Stückpreis" -#: order/models.py:1367 +#: order/models.py:1416 msgid "Supplier part must match supplier" msgstr "Lieferantenteil muss mit Lieferant übereinstimmen" -#: order/models.py:1374 +#: order/models.py:1423 msgid "deleted" msgstr "gelöscht" -#: order/models.py:1402 +#: order/models.py:1451 msgid "Supplier part" msgstr "Zuliefererteil" -#: order/models.py:1409 order/templates/order/order_base.html:196 +#: order/models.py:1458 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/purchase_order.js:2169 +#: templates/js/translated/return_order.js:763 #: templates/js/translated/table_filters.js:120 #: templates/js/translated/table_filters.js:602 msgid "Received" msgstr "Empfangen" -#: order/models.py:1410 +#: order/models.py:1459 msgid "Number of items received" msgstr "Empfangene Objekt-Anzahl" -#: order/models.py:1418 stock/models.py:923 stock/serializers.py:400 +#: order/models.py:1467 stock/models.py:940 stock/serializers.py:529 #: stock/templates/stock/item_base.html:183 -#: templates/js/translated/stock.js:2310 +#: templates/js/translated/stock.js:2311 msgid "Purchase Price" msgstr "Preis" -#: order/models.py:1419 +#: order/models.py:1468 msgid "Unit purchase price" msgstr "Preis pro Einheit" -#: order/models.py:1434 +#: order/models.py:1483 msgid "Where does the Purchaser want this item to be stored?" msgstr "Wo möchte der Käufer diesen Artikel gelagert haben?" -#: order/models.py:1523 +#: order/models.py:1574 msgid "Virtual part cannot be assigned to a sales order" msgstr "Ein virtuelles Teil kann nicht einem Auftrag zugeordnet werden" -#: order/models.py:1528 +#: order/models.py:1579 msgid "Only salable parts can be assigned to a sales order" msgstr "Nur verkaufbare Teile können einem Auftrag zugewiesen werden" -#: order/models.py:1554 part/templates/part/part_pricing.html:107 +#: order/models.py:1605 part/templates/part/part_pricing.html:107 #: part/templates/part/prices.html:139 templates/js/translated/pricing.js:957 msgid "Sale Price" msgstr "Verkaufspreis" -#: order/models.py:1555 +#: order/models.py:1606 msgid "Unit sale price" msgstr "Stückverkaufspreis" -#: order/models.py:1565 +#: order/models.py:1615 order/status_codes.py:43 +#: templates/js/translated/sales_order.js:1559 +#: templates/js/translated/sales_order.js:1680 +#: templates/js/translated/sales_order.js:1993 +msgid "Shipped" +msgstr "Versendet" + +#: order/models.py:1616 msgid "Shipped quantity" msgstr "Versendete Menge" -#: order/models.py:1657 +#: order/models.py:1708 msgid "Date of shipment" msgstr "Versanddatum" -#: order/models.py:1663 templates/js/translated/sales_order.js:1036 +#: order/models.py:1714 templates/js/translated/sales_order.js:1072 msgid "Delivery Date" msgstr "Lieferdatum" -#: order/models.py:1664 +#: order/models.py:1715 msgid "Date of delivery of shipment" msgstr "Versanddatum" -#: order/models.py:1672 +#: order/models.py:1723 msgid "Checked By" msgstr "Kontrolliert von" -#: order/models.py:1673 +#: order/models.py:1724 msgid "User who checked this shipment" msgstr "Benutzer, der diese Sendung kontrolliert hat" -#: order/models.py:1680 order/models.py:1893 order/serializers.py:1350 -#: order/serializers.py:1460 templates/js/translated/model_renderers.js:448 +#: order/models.py:1731 order/models.py:1944 order/serializers.py:1354 +#: order/serializers.py:1464 templates/js/translated/model_renderers.js:454 msgid "Shipment" msgstr "Sendung" -#: order/models.py:1681 +#: order/models.py:1732 msgid "Shipment number" msgstr "Sendungsnummer" -#: order/models.py:1689 +#: order/models.py:1740 msgid "Tracking Number" msgstr "Sendungsverfolgungsnummer" -#: order/models.py:1690 +#: order/models.py:1741 msgid "Shipment tracking information" msgstr "Informationen zur Sendungsverfolgung" -#: order/models.py:1697 +#: order/models.py:1748 msgid "Invoice Number" msgstr "Rechnungsnummer" -#: order/models.py:1698 +#: order/models.py:1749 msgid "Reference number for associated invoice" msgstr "Referenznummer für zugehörige Rechnung" -#: order/models.py:1718 +#: order/models.py:1769 msgid "Shipment has already been sent" msgstr "Sendung wurde bereits versandt" -#: order/models.py:1721 +#: order/models.py:1772 msgid "Shipment has no allocated stock items" msgstr "Sendung hat keine zugewiesene Lagerartikel" -#: order/models.py:1839 order/models.py:1841 +#: order/models.py:1890 order/models.py:1892 msgid "Stock item has not been assigned" msgstr "Lagerartikel wurde nicht zugewiesen" -#: order/models.py:1848 +#: order/models.py:1899 msgid "Cannot allocate stock item to a line with a different part" msgstr "Kann Lagerartikel keiner Zeile mit einem anderen Teil hinzufügen" -#: order/models.py:1851 +#: order/models.py:1902 msgid "Cannot allocate stock to a line without a part" msgstr "Kann Lagerartikel keiner Zeile ohne Teil hinzufügen" -#: order/models.py:1854 +#: order/models.py:1905 msgid "Allocation quantity cannot exceed stock quantity" msgstr "Die zugeordnete Anzahl darf nicht die verfügbare Anzahl überschreiten" -#: order/models.py:1873 order/serializers.py:1227 +#: order/models.py:1924 order/serializers.py:1231 msgid "Quantity must be 1 for serialized stock item" msgstr "Anzahl für serialisierte Lagerartikel muss 1 sein" -#: order/models.py:1876 +#: order/models.py:1927 msgid "Sales order does not match shipment" msgstr "Auftrag gehört nicht zu Sendung" -#: order/models.py:1877 plugin/base/barcodes/api.py:481 +#: order/models.py:1928 plugin/base/barcodes/api.py:481 msgid "Shipment does not match sales order" msgstr "Sendung gehört nicht zu Auftrag" -#: order/models.py:1885 +#: order/models.py:1936 msgid "Line" msgstr "Position" -#: order/models.py:1894 +#: order/models.py:1945 msgid "Sales order shipment reference" msgstr "Sendungsnummer-Referenz" -#: order/models.py:1907 order/models.py:2215 -#: templates/js/translated/return_order.js:722 +#: order/models.py:1958 order/models.py:2275 +#: templates/js/translated/return_order.js:721 msgid "Item" msgstr "Position" -#: order/models.py:1908 +#: order/models.py:1959 msgid "Select stock item to allocate" msgstr "Lagerartikel für Zuordnung auswählen" -#: order/models.py:1917 +#: order/models.py:1968 msgid "Enter stock allocation quantity" msgstr "Anzahl für Bestandszuordnung eingeben" -#: order/models.py:1997 +#: order/models.py:2057 msgid "Return Order reference" msgstr "Rücksendungsreferenz" -#: order/models.py:2009 +#: order/models.py:2069 msgid "Company from which items are being returned" msgstr "Firma von der die Artikel zurückgeschickt werden" -#: order/models.py:2021 +#: order/models.py:2081 msgid "Return order status" msgstr "Status der Rücksendung" -#: order/models.py:2200 +#: order/models.py:2260 msgid "Only serialized items can be assigned to a Return Order" msgstr "Nur serialisierte Artikel können einer Rücksendung zugeordnet werden" -#: order/models.py:2216 +#: order/models.py:2276 msgid "Select item to return from customer" msgstr "Artikel zur Rücksendung auswählen" -#: order/models.py:2222 +#: order/models.py:2282 msgid "Received Date" msgstr "Empfangsdatum" -#: order/models.py:2223 +#: order/models.py:2283 msgid "The date this this return item was received" msgstr "Das Datum des Empfangs dieses Rücksendeartikels" -#: order/models.py:2234 templates/js/translated/return_order.js:733 +#: order/models.py:2294 templates/js/translated/return_order.js:732 #: templates/js/translated/table_filters.js:123 msgid "Outcome" msgstr "Ergebnis" -#: order/models.py:2235 +#: order/models.py:2295 msgid "Outcome for this line item" msgstr "Ergebnis für dieses Zeilenelement" -#: order/models.py:2242 +#: order/models.py:2302 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:283 +#: order/serializers.py:80 order/templates/order/po_sidebar.html:5 +#: order/templates/order/return_order_detail.html:18 +#: order/templates/order/so_sidebar.html:5 +#: report/templates/report/inventree_purchase_order_report.html:22 +#: report/templates/report/inventree_return_order_report.html:19 +#: report/templates/report/inventree_sales_order_report.html:22 +msgid "Line Items" +msgstr "Positionen" + +#: order/serializers.py:84 +msgid "Completed Lines" +msgstr "Abgeschlossene Positionen" + +#: order/serializers.py:287 msgid "Order cannot be cancelled" msgstr "Bestellung kann nicht verworfen werden" -#: order/serializers.py:298 order/serializers.py:1243 +#: order/serializers.py:302 order/serializers.py:1247 msgid "Allow order to be closed with incomplete line items" msgstr "Erlaube das Schließen des Auftrags mit unvollständigen Positionen" -#: order/serializers.py:308 order/serializers.py:1253 +#: order/serializers.py:312 order/serializers.py:1257 msgid "Order has incomplete line items" msgstr "Auftrag hat unvollständige Positionen" -#: order/serializers.py:436 +#: order/serializers.py:440 msgid "Order is not open" msgstr "Der Auftrag ist nicht offen" -#: order/serializers.py:457 +#: order/serializers.py:461 msgid "Auto Pricing" msgstr "Automatische Preisgestaltung" -#: order/serializers.py:459 +#: order/serializers.py:463 msgid "Automatically calculate purchase price based on supplier part data" msgstr "Kaufpreis automatisch basierend auf Lieferantenbestandsdaten berechnen" -#: order/serializers.py:469 +#: order/serializers.py:473 msgid "Purchase price currency" msgstr "Kaufpreiswährung" -#: order/serializers.py:475 +#: order/serializers.py:479 msgid "Merge Items" msgstr "Elemente zusammenfügen" -#: order/serializers.py:477 +#: order/serializers.py:481 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:495 +#: order/serializers.py:499 msgid "Supplier part must be specified" msgstr "Zuliefererteil muss ausgewählt werden" -#: order/serializers.py:498 +#: order/serializers.py:502 msgid "Purchase order must be specified" msgstr "Bestellung muss angegeben sein" -#: order/serializers.py:506 +#: order/serializers.py:510 msgid "Supplier must match purchase order" msgstr "Lieferant muss mit der Bestellung übereinstimmen" -#: order/serializers.py:507 +#: order/serializers.py:511 msgid "Purchase order must match supplier" msgstr "Die Bestellung muss mit dem Lieferant übereinstimmen" -#: order/serializers.py:546 order/serializers.py:1321 +#: order/serializers.py:550 order/serializers.py:1325 msgid "Line Item" msgstr "Position" -#: order/serializers.py:552 +#: order/serializers.py:556 msgid "Line item does not match purchase order" msgstr "Position stimmt nicht mit Kaufauftrag überein" -#: order/serializers.py:562 order/serializers.py:670 order/serializers.py:1676 +#: order/serializers.py:566 order/serializers.py:674 order/serializers.py:1680 msgid "Select destination location for received items" msgstr "Zielort für empfangene Teile auswählen" -#: order/serializers.py:578 templates/js/translated/purchase_order.js:1130 +#: order/serializers.py:582 templates/js/translated/purchase_order.js:1130 msgid "Enter batch code for incoming stock items" msgstr "Losnummer für eingehende Lagerartikel" -#: order/serializers.py:586 templates/js/translated/purchase_order.js:1154 +#: order/serializers.py:590 templates/js/translated/purchase_order.js:1154 msgid "Enter serial numbers for incoming stock items" msgstr "Seriennummern für eingehende Lagerartikel" -#: order/serializers.py:597 templates/js/translated/barcode.js:52 +#: order/serializers.py:601 templates/js/translated/barcode.js:52 msgid "Barcode" -msgstr "" +msgstr "Barcode" -#: order/serializers.py:598 +#: order/serializers.py:602 msgid "Scanned barcode" msgstr "Gescannter Barcode" -#: order/serializers.py:614 +#: order/serializers.py:618 msgid "Barcode is already in use" msgstr "Barcode ist bereits in Verwendung" -#: order/serializers.py:638 +#: order/serializers.py:642 msgid "An integer quantity must be provided for trackable parts" msgstr "Ganzzahl für verfolgbare Teile erforderlich" -#: order/serializers.py:686 order/serializers.py:1692 +#: order/serializers.py:690 order/serializers.py:1696 msgid "Line items must be provided" msgstr "Positionen müssen angegeben werden" -#: order/serializers.py:702 +#: order/serializers.py:706 msgid "Destination location must be specified" msgstr "Ziel-Lagerort muss angegeben werden" -#: order/serializers.py:713 +#: order/serializers.py:717 msgid "Supplied barcode values must be unique" msgstr "Barcode muss eindeutig sein" -#: order/serializers.py:1070 +#: order/serializers.py:1074 msgid "Sale price currency" msgstr "Verkaufspreis-Währung" -#: order/serializers.py:1130 +#: order/serializers.py:1134 msgid "No shipment details provided" msgstr "Keine Sendungsdetails angegeben" -#: order/serializers.py:1191 order/serializers.py:1330 +#: order/serializers.py:1195 order/serializers.py:1334 msgid "Line item is not associated with this order" msgstr "Position ist nicht diesem Auftrag zugeordnet" -#: order/serializers.py:1210 +#: order/serializers.py:1214 msgid "Quantity must be positive" msgstr "Anzahl muss positiv sein" -#: order/serializers.py:1340 +#: order/serializers.py:1344 msgid "Enter serial numbers to allocate" msgstr "Seriennummern zum Zuweisen eingeben" -#: order/serializers.py:1362 order/serializers.py:1468 +#: order/serializers.py:1366 order/serializers.py:1472 msgid "Shipment has already been shipped" msgstr "Sendung wurde bereits versandt" -#: order/serializers.py:1365 order/serializers.py:1471 +#: order/serializers.py:1369 order/serializers.py:1475 msgid "Shipment is not associated with this order" msgstr "Sendung ist nicht diesem Auftrag zugeordnet" -#: order/serializers.py:1412 +#: order/serializers.py:1416 msgid "No match found for the following serial numbers" msgstr "Folgende Serienummern konnten nicht gefunden werden" -#: order/serializers.py:1419 +#: order/serializers.py:1423 msgid "The following serial numbers are already allocated" msgstr "Folgende Seriennummern sind bereits zugewiesen" -#: order/serializers.py:1646 +#: order/serializers.py:1650 msgid "Return order line item" msgstr "Artikel der Bestellzeile zurücksenden" -#: order/serializers.py:1652 +#: order/serializers.py:1656 msgid "Line item does not match return order" msgstr "Artikel entspricht nicht der Rücksendeschrift" -#: order/serializers.py:1655 +#: order/serializers.py:1659 msgid "Line item has already been received" msgstr "Artikel wurde bereits erhalten" -#: order/serializers.py:1684 +#: order/serializers.py:1688 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:1762 +#: order/serializers.py:1766 msgid "Line price currency" msgstr "Verkaufspreis-Währung" +#: order/status_codes.py:16 order/status_codes.py:46 stock/status_codes.py:16 +msgid "Lost" +msgstr "Verloren" + +#: order/status_codes.py:17 order/status_codes.py:47 stock/status_codes.py:22 +msgid "Returned" +msgstr "Zurückgegeben" + +#: order/status_codes.py:40 order/status_codes.py:67 +msgid "In Progress" +msgstr "In Bearbeitung" + +#: order/status_codes.py:85 +msgid "Return" +msgstr "Zurück" + +#: order/status_codes.py:88 +msgid "Repair" +msgstr "Reparatur" + +#: order/status_codes.py:91 +msgid "Replace" +msgstr "Ersetzen" + +#: order/status_codes.py:94 +msgid "Refund" +msgstr "Rückerstattung" + +#: order/status_codes.py:97 +msgid "Reject" +msgstr "Ablehnen" + #: order/tasks.py:25 msgid "Overdue Purchase Order" msgstr "Überfällige Bestellung" @@ -5553,7 +5417,7 @@ msgstr "Bestellung als vollständig markieren" #: order/templates/order/order_base.html:84 #: order/templates/order/return_order_base.html:87 -#: order/templates/order/sales_order_base.html:93 +#: order/templates/order/sales_order_base.html:97 msgid "Complete Order" msgstr "Auftrag fertigstellen" @@ -5563,13 +5427,13 @@ msgstr "Vorschaubild des Lieferanten" #: order/templates/order/order_base.html:106 #: order/templates/order/return_order_base.html:101 -#: order/templates/order/sales_order_base.html:106 +#: order/templates/order/sales_order_base.html:110 msgid "Order Reference" msgstr "Bestellreferenz" #: order/templates/order/order_base.html:111 #: order/templates/order/return_order_base.html:106 -#: order/templates/order/sales_order_base.html:111 +#: order/templates/order/sales_order_base.html:115 msgid "Order Description" msgstr "Bestellungsbeschreibung" @@ -5578,19 +5442,19 @@ msgid "No suppplier information available" msgstr "Keine Lieferanteninformationen verfügbar" #: order/templates/order/order_base.html:154 -#: order/templates/order/sales_order_base.html:157 +#: order/templates/order/sales_order_base.html:161 msgid "Completed Line Items" msgstr "Abgeschlossene Positionen" #: order/templates/order/order_base.html:160 -#: order/templates/order/sales_order_base.html:163 -#: order/templates/order/sales_order_base.html:173 +#: order/templates/order/sales_order_base.html:167 +#: order/templates/order/sales_order_base.html:177 msgid "Incomplete" msgstr "Unvollständig" #: order/templates/order/order_base.html:179 #: order/templates/order/return_order_base.html:157 -#: report/templates/report/inventree_build_order_base.html:121 +#: report/templates/report/inventree_build_order_report.html:121 msgid "Issued" msgstr "Aufgegeben" @@ -5600,15 +5464,15 @@ msgstr "Gesamtsumme" #: order/templates/order/order_base.html:228 #: order/templates/order/return_order_base.html:199 -#: order/templates/order/sales_order_base.html:239 +#: order/templates/order/sales_order_base.html:243 msgid "Total cost could not be calculated" msgstr "Gesamtkosten konnten nicht berechnet werden" -#: order/templates/order/order_base.html:318 +#: order/templates/order/order_base.html:314 msgid "Purchase Order QR Code" msgstr "Bestellung QR-Code" -#: order/templates/order/order_base.html:330 +#: order/templates/order/order_base.html:326 msgid "Link Barcode to Purchase Order" msgstr "Barcode mit Bestellung verknüpfen" @@ -5662,11 +5526,11 @@ msgstr "Auswahl duplizieren" #: 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/build.js:1629 #: 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/return_order.js:505 +#: templates/js/translated/sales_order.js:1145 #: templates/js/translated/stock.js:714 templates/js/translated/stock.js:883 #: templates/patterns/wizard/match_fields.html:70 msgid "Remove row" @@ -5708,15 +5572,6 @@ msgstr "Bestellung ist bereits verarbeitet. Dateien können nicht hochgeladen we msgid "Step %(step)s of %(count)s" msgstr "Schritt %(step)s von %(count)s" -#: 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 "Positionen" - #: order/templates/order/po_sidebar.html:7 msgid "Received Stock" msgstr "Empfangene Lagerartikel" @@ -5729,7 +5584,7 @@ msgstr "Bestellungs-Positionen" #: 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/return_order.js:458 #: templates/js/translated/sales_order.js:237 msgid "Add Line Item" msgstr "Position hinzufügen" @@ -5778,30 +5633,30 @@ msgid "Print packing list" msgstr "Paketliste drucken" #: 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 +#: order/templates/order/sales_order_base.html:155 +#: templates/js/translated/return_order.js:308 +#: templates/js/translated/sales_order.js:833 msgid "Customer Reference" msgstr "Kundenreferenz" #: order/templates/order/return_order_base.html:195 -#: order/templates/order/sales_order_base.html:235 +#: order/templates/order/sales_order_base.html:239 #: part/templates/part/part_pricing.html:32 #: part/templates/part/part_pricing.html:58 #: part/templates/part/part_pricing.html:99 #: part/templates/part/part_pricing.html:114 #: templates/js/translated/part.js:1072 -#: templates/js/translated/purchase_order.js:1753 -#: templates/js/translated/return_order.js:381 -#: templates/js/translated/sales_order.js:855 +#: templates/js/translated/purchase_order.js:1752 +#: templates/js/translated/return_order.js:380 +#: templates/js/translated/sales_order.js:891 msgid "Total Cost" msgstr "Gesamtkosten" -#: order/templates/order/return_order_base.html:263 +#: order/templates/order/return_order_base.html:259 msgid "Return Order QR Code" msgstr "QR-Code Bestellung zurückgeben" -#: order/templates/order/return_order_base.html:275 +#: order/templates/order/return_order_base.html:271 msgid "Link Barcode to Return Order" msgstr "Barcode mit Rücksendung verknüpfen" @@ -5819,25 +5674,30 @@ msgid "Ship Items" msgstr "Versandartikel" #: order/templates/order/sales_order_base.html:92 -#: templates/js/translated/sales_order.js:484 +#: order/templates/order/sales_order_base.html:93 +msgid "Mark As Shipped" +msgstr "Als verschickt markieren" + +#: order/templates/order/sales_order_base.html:96 +#: templates/js/translated/sales_order.js:536 msgid "Complete Sales Order" msgstr "Auftrag abschließen" -#: order/templates/order/sales_order_base.html:131 +#: order/templates/order/sales_order_base.html:135 msgid "This Sales Order has not been fully allocated" msgstr "Dieser Auftrag ist nicht vollständig zugeordnet" -#: order/templates/order/sales_order_base.html:169 +#: order/templates/order/sales_order_base.html:173 #: order/templates/order/sales_order_detail.html:99 #: order/templates/order/so_sidebar.html:11 msgid "Completed Shipments" msgstr "Abgeschlossene Sendungen" -#: order/templates/order/sales_order_base.html:312 +#: order/templates/order/sales_order_base.html:321 msgid "Sales Order QR Code" msgstr "Auftrag QR-Code" -#: order/templates/order/sales_order_base.html:324 +#: order/templates/order/sales_order_base.html:333 msgid "Link Barcode to Sales Order" msgstr "Barcode mit Verkaufsauftrag verknüpfen" @@ -5881,12 +5741,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:3921 part/stocktake.py:218 +#: part/admin.py:39 part/admin.py:406 part/models.py:3964 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:3922 part/stocktake.py:219 +#: part/admin.py:41 part/admin.py:413 part/models.py:3965 part/stocktake.py:219 #: stock/admin.py:157 msgid "Part Name" msgstr "Name des Teils" @@ -5895,20 +5755,20 @@ msgstr "Name des Teils" msgid "Part Description" msgstr "Beschreibung des Teils" -#: part/admin.py:48 part/models.py:904 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 +#: part/admin.py:48 part/models.py:947 part/templates/part/part_base.html:269 +#: report/templates/report/inventree_stock_location_report.html:103 +#: templates/js/translated/part.js:1226 templates/js/translated/part.js:2340 +#: templates/js/translated/stock.js:2036 msgid "IPN" msgstr "IPN (Interne Produktnummer)" -#: part/admin.py:50 part/models.py:913 part/templates/part/part_base.html:277 -#: report/models.py:195 templates/js/translated/part.js:1231 -#: templates/js/translated/part.js:2347 +#: part/admin.py:50 part/models.py:956 part/templates/part/part_base.html:277 +#: report/models.py:161 templates/js/translated/part.js:1231 +#: templates/js/translated/part.js:2346 msgid "Revision" msgstr "Version" -#: part/admin.py:53 part/admin.py:317 part/models.py:886 +#: part/admin.py:53 part/admin.py:319 part/models.py:929 #: part/templates/part/category.html:94 part/templates/part/part_base.html:298 msgid "Keywords" msgstr "Schlüsselwörter" @@ -5917,15 +5777,15 @@ msgstr "Schlüsselwörter" msgid "Part Image" msgstr "Artikelbild" -#: part/admin.py:63 part/admin.py:300 part/stocktake.py:221 +#: part/admin.py:63 part/admin.py:302 part/stocktake.py:221 msgid "Category ID" msgstr "Kategorie-ID" -#: part/admin.py:67 part/admin.py:302 part/stocktake.py:222 +#: part/admin.py:67 part/admin.py:304 part/stocktake.py:222 msgid "Category Name" msgstr "Kategoriename" -#: part/admin.py:71 part/admin.py:314 +#: part/admin.py:71 part/admin.py:316 msgid "Default Location ID" msgstr "Standard-Standortnummer" @@ -5933,11 +5793,11 @@ msgstr "Standard-Standortnummer" msgid "Default Supplier ID" msgstr "Standard-Lieferantennummer" -#: part/admin.py:81 part/models.py:872 part/templates/part/part_base.html:177 +#: part/admin.py:81 part/models.py:915 part/templates/part/part_base.html:177 msgid "Variant Of" msgstr "Variante von" -#: part/admin.py:84 part/models.py:1000 part/templates/part/part_base.html:203 +#: part/admin.py:84 part/models.py:1043 part/templates/part/part_base.html:203 msgid "Minimum Stock" msgstr "Minimaler Bestand" @@ -5950,160 +5810,164 @@ msgstr "Benutzt in" msgid "Building" msgstr "Im Bau" -#: part/admin.py:155 part/models.py:3080 part/models.py:3094 +#: part/admin.py:155 part/models.py:3123 part/models.py:3137 #: templates/js/translated/part.js:969 msgid "Minimum Cost" msgstr "Minimale Kosten" -#: part/admin.py:158 part/models.py:3087 part/models.py:3101 +#: part/admin.py:158 part/models.py:3130 part/models.py:3144 #: templates/js/translated/part.js:979 msgid "Maximum Cost" msgstr "Maximale Kosten" -#: part/admin.py:306 part/admin.py:393 stock/admin.py:58 stock/admin.py:211 +#: part/admin.py:308 part/admin.py:395 stock/admin.py:58 stock/admin.py:211 msgid "Parent ID" msgstr "Eltern ID" -#: part/admin.py:310 part/admin.py:400 stock/admin.py:62 +#: part/admin.py:312 part/admin.py:402 stock/admin.py:62 msgid "Parent Name" msgstr "Name des übergeordneten Teils" -#: part/admin.py:318 part/templates/part/category.html:88 +#: part/admin.py:320 part/templates/part/category.html:88 #: part/templates/part/category.html:101 msgid "Category Path" msgstr "Pfad zur Kategorie" -#: part/admin.py:323 part/models.py:391 part/serializers.py:117 +#: part/admin.py:325 part/models.py:393 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/js/translated/part.js:2803 templates/js/translated/search.js:130 #: templates/navbar.html:24 users/models.py:203 msgid "Parts" msgstr "Teile" -#: part/admin.py:384 +#: part/admin.py:386 msgid "BOM Level" msgstr "Stücklistenebene" -#: part/admin.py:387 +#: part/admin.py:389 msgid "BOM Item ID" msgstr "Stücklisten-Position ID" -#: part/admin.py:397 +#: part/admin.py:399 msgid "Parent IPN" msgstr "Übergeordnete IPN" -#: part/admin.py:408 part/models.py:3923 +#: part/admin.py:410 part/models.py:3966 msgid "Part IPN" msgstr "Teil IPN" -#: part/admin.py:421 part/serializers.py:1261 +#: part/admin.py:423 part/serializers.py:1278 #: 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:1276 +#: part/admin.py:428 part/serializers.py:1293 #: templates/js/translated/pricing.js:353 #: templates/js/translated/pricing.js:1032 msgid "Maximum Price" msgstr "Höchster Preis" -#: part/api.py:119 +#: part/api.py:110 msgid "Starred" msgstr "Markiert" -#: part/api.py:121 +#: part/api.py:112 msgid "Filter by starred categories" msgstr "Nach markierten Kategorien filtern" -#: part/api.py:138 stock/api.py:284 +#: part/api.py:129 stock/api.py:318 msgid "Depth" msgstr "Ebenen" -#: part/api.py:138 +#: part/api.py:129 msgid "Filter by category depth" msgstr "Filter nach Kategorietiefe" -#: part/api.py:156 stock/api.py:302 +#: part/api.py:147 stock/api.py:336 msgid "Cascade" msgstr "Mehrstufig" -#: part/api.py:158 +#: part/api.py:149 msgid "Include sub-categories in filtered results" msgstr "Unterkategorien in gefilterte Ergebnisse einbeziehen" -#: part/api.py:178 +#: part/api.py:169 msgid "Parent" msgstr "Übergeordnetes" -#: part/api.py:180 +#: part/api.py:171 msgid "Filter by parent category" msgstr "Nach übergeordneter Kategorie filtern" -#: part/api.py:213 +#: part/api.py:204 msgid "Exclude Tree" msgstr "Baum ausschließen" -#: part/api.py:215 +#: part/api.py:206 msgid "Exclude sub-categories under the specified category" msgstr "Unterkategorien in der angegebenen Kategorie ausschließen" -#: part/api.py:461 +#: part/api.py:455 msgid "Has Results" msgstr "Ergebnisse" -#: part/api.py:628 +#: part/api.py:622 msgid "Incoming Purchase Order" msgstr "Eingehende Bestellung" -#: part/api.py:646 +#: part/api.py:640 msgid "Outgoing Sales Order" msgstr "Ausgehender Auftrag" -#: part/api.py:662 +#: part/api.py:656 msgid "Stock produced by Build Order" msgstr "Lagerartikel produziert von Bauauftrag" -#: part/api.py:746 +#: part/api.py:740 msgid "Stock required for Build Order" msgstr "Lagerartikel für Bauauftrag benötigt" -#: part/api.py:893 +#: part/api.py:887 msgid "Valid" msgstr "Gültig" -#: part/api.py:894 +#: part/api.py:888 msgid "Validate entire Bill of Materials" msgstr "Gesamte Stückliste validieren" -#: part/api.py:900 +#: part/api.py:894 msgid "This option must be selected" msgstr "Diese Option muss ausgewählt werden" -#: part/api.py:1561 part/models.py:896 part/models.py:3386 part/models.py:3866 -#: part/serializers.py:406 part/serializers.py:1117 -#: part/templates/part/part_base.html:260 stock/api.py:745 +#: part/api.py:1111 +msgid "BOM Valid" +msgstr "" + +#: part/api.py:1515 part/models.py:939 part/models.py:3429 part/models.py:3909 +#: part/serializers.py:406 part/serializers.py:1134 +#: part/templates/part/part_base.html:260 stock/api.py:781 #: templates/InvenTree/settings/settings_staff_js.html:300 #: templates/js/translated/notification.js:60 -#: templates/js/translated/part.js:2377 +#: templates/js/translated/part.js:2376 msgid "Category" msgstr "Kategorie" -#: part/api.py:1849 +#: part/api.py:1803 msgid "Uses" msgstr "Verwendet" -#: part/bom.py:170 part/models.py:101 part/models.py:939 +#: part/bom.py:170 part/models.py:102 part/models.py:982 #: part/templates/part/category.html:116 part/templates/part/part_base.html:367 msgid "Default Location" msgstr "Standard-Lagerort" -#: part/bom.py:171 part/serializers.py:822 +#: part/bom.py:171 part/serializers.py:837 #: templates/email/low_stock_notification.html:16 msgid "Total Stock" msgstr "Gesamtbestand" @@ -6112,698 +5976,712 @@ msgstr "Gesamtbestand" msgid "Input quantity for price calculation" msgstr "Menge für die Preisberechnung" -#: part/models.py:82 part/models.py:3867 part/templates/part/category.html:16 +#: part/models.py:83 part/models.py:3910 part/templates/part/category.html:16 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "Teil-Kategorie" -#: part/models.py:83 part/templates/part/category.html:136 +#: part/models.py:84 part/templates/part/category.html:136 #: templates/InvenTree/search.html:97 templates/js/translated/search.js:158 #: users/models.py:202 msgid "Part Categories" msgstr "Teil-Kategorien" -#: part/models.py:102 +#: part/models.py:103 msgid "Default location for parts in this category" msgstr "Standard-Lagerort für Teile dieser Kategorie" -#: part/models.py:107 stock/models.py:165 templates/js/translated/part.js:2810 +#: part/models.py:108 stock/models.py:173 templates/js/translated/part.js:2809 #: templates/js/translated/stock.js:2772 #: templates/js/translated/table_filters.js:239 #: templates/js/translated/table_filters.js:283 msgid "Structural" msgstr "Strukturell" -#: part/models.py:109 +#: part/models.py:110 msgid "Parts may not be directly assigned to a structural category, but may be assigned to child categories." msgstr "Teile können nicht direkt einer strukturellen Kategorie zugeordnet werden, können aber untergeordneten Kategorien zugeordnet werden." -#: part/models.py:118 +#: part/models.py:119 msgid "Default keywords" msgstr "Standard Stichwörter" -#: part/models.py:119 +#: part/models.py:120 msgid "Default keywords for parts in this category" msgstr "Standard-Stichworte für Teile dieser Kategorie" -#: part/models.py:125 stock/models.py:89 stock/models.py:148 +#: part/models.py:126 stock/models.py:85 stock/models.py:156 #: templates/InvenTree/settings/settings_staff_js.html:456 msgid "Icon" msgstr "Symbol" -#: part/models.py:126 stock/models.py:149 +#: part/models.py:127 stock/models.py:157 msgid "Icon (optional)" msgstr "Symbol (optional)" -#: part/models.py:148 +#: part/models.py:149 msgid "You cannot make this part category structural because some parts are already assigned to it!" msgstr "Sie können diese Teilekategorie nicht als strukturell festlegen, da ihr bereits Teile zugewiesen sind!" -#: part/models.py:484 +#: part/models.py:482 +msgid "Cannot delete this part as it is still active" +msgstr "" + +#: part/models.py:489 +msgid "Cannot delete this part as it is used in an assembly" +msgstr "" + +#: part/models.py:527 msgid "Invalid choice for parent part" msgstr "Ungültige Auswahl für übergeordnetes Teil" -#: part/models.py:532 part/models.py:539 +#: part/models.py:575 part/models.py:582 #, python-brace-format msgid "Part '{self}' cannot be used in BOM for '{parent}' (recursive)" msgstr "Teil '{self}' kann in der Stückliste nicht für '{parent}' (rekursiv) verwendet werden" -#: part/models.py:551 +#: part/models.py:594 #, python-brace-format msgid "Part '{parent}' is used in BOM for '{self}' (recursive)" msgstr "Teil '{parent}' wird in der Stückliste für '{self}' (rekursiv) verwendet" -#: part/models.py:616 +#: part/models.py:659 #, python-brace-format msgid "IPN must match regex pattern {pattern}" msgstr "IPN muss mit Regex-Muster {pattern} übereinstimmen" -#: part/models.py:696 +#: part/models.py:739 msgid "Stock item with this serial number already exists" msgstr "Ein Lagerartikel mit dieser Seriennummer existiert bereits" -#: part/models.py:801 +#: part/models.py:844 msgid "Duplicate IPN not allowed in part settings" msgstr "Doppelte IPN in den Teil-Einstellungen nicht erlaubt" -#: part/models.py:811 +#: part/models.py:854 msgid "Part with this Name, IPN and Revision already exists." msgstr "Teil mit diesem Namen, IPN und Revision existiert bereits." -#: part/models.py:826 +#: part/models.py:869 msgid "Parts cannot be assigned to structural part categories!" msgstr "Strukturellen Teilekategorien können keine Teile zugewiesen werden!" -#: part/models.py:855 part/models.py:3922 +#: part/models.py:898 part/models.py:3965 msgid "Part name" msgstr "Name des Teils" -#: part/models.py:860 +#: part/models.py:903 msgid "Is Template" msgstr "Ist eine Vorlage" -#: part/models.py:861 +#: part/models.py:904 msgid "Is this part a template part?" msgstr "Ist dieses Teil eine Vorlage?" -#: part/models.py:871 +#: part/models.py:914 msgid "Is this part a variant of another part?" msgstr "Ist dieses Teil eine Variante eines anderen Teils?" -#: part/models.py:879 +#: part/models.py:922 msgid "Part description (optional)" msgstr "Artikelbeschreibung (optional)" -#: part/models.py:887 +#: part/models.py:930 msgid "Part keywords to improve visibility in search results" msgstr "Schlüsselworte um die Sichtbarkeit in Suchergebnissen zu verbessern" -#: part/models.py:897 +#: part/models.py:940 msgid "Part category" msgstr "Teile-Kategorie" -#: part/models.py:905 +#: part/models.py:948 msgid "Internal Part Number" msgstr "Interne Teilenummer" -#: part/models.py:912 +#: part/models.py:955 msgid "Part revision or version number" msgstr "Revisions- oder Versionsnummer" -#: part/models.py:937 +#: part/models.py:980 msgid "Where is this item normally stored?" msgstr "Wo wird dieses Teil normalerweise gelagert?" -#: part/models.py:983 part/templates/part/part_base.html:376 +#: part/models.py:1026 part/templates/part/part_base.html:376 msgid "Default Supplier" msgstr "Standard Zulieferer" -#: part/models.py:984 +#: part/models.py:1027 msgid "Default supplier part" msgstr "Standard Zuliefererteil" -#: part/models.py:991 +#: part/models.py:1034 msgid "Default Expiry" msgstr "Standard Ablaufzeit" -#: part/models.py:992 +#: part/models.py:1035 msgid "Expiry time (in days) for stock items of this part" msgstr "Ablauf-Zeit (in Tagen) für Bestand dieses Teils" -#: part/models.py:1001 +#: part/models.py:1044 msgid "Minimum allowed stock level" msgstr "Minimal zulässiger Bestand" -#: part/models.py:1010 +#: part/models.py:1053 msgid "Units of measure for this part" msgstr "Maßeinheit für diesen Teil" -#: part/models.py:1017 +#: part/models.py:1060 msgid "Can this part be built from other parts?" msgstr "Kann dieses Teil aus anderen Teilen angefertigt werden?" -#: part/models.py:1023 +#: part/models.py:1066 msgid "Can this part be used to build other parts?" msgstr "Kann dieses Teil zum Bauauftrag von anderen genutzt werden?" -#: part/models.py:1029 +#: part/models.py:1072 msgid "Does this part have tracking for unique items?" msgstr "Hat dieses Teil Tracking für einzelne Objekte?" -#: part/models.py:1035 +#: part/models.py:1078 msgid "Can this part be purchased from external suppliers?" msgstr "Kann dieses Teil von externen Zulieferern gekauft werden?" -#: part/models.py:1041 +#: part/models.py:1084 msgid "Can this part be sold to customers?" msgstr "Kann dieses Teil an Kunden verkauft werden?" -#: part/models.py:1045 +#: part/models.py:1088 msgid "Is this part active?" msgstr "Ist dieses Teil aktiv?" -#: part/models.py:1051 +#: part/models.py:1094 msgid "Is this a virtual part, such as a software product or license?" msgstr "Ist dieses Teil virtuell, wie zum Beispiel eine Software oder Lizenz?" -#: part/models.py:1057 +#: part/models.py:1100 msgid "BOM checksum" msgstr "Prüfsumme der Stückliste" -#: part/models.py:1058 +#: part/models.py:1101 msgid "Stored BOM checksum" msgstr "Prüfsumme der Stückliste gespeichert" -#: part/models.py:1066 +#: part/models.py:1109 msgid "BOM checked by" msgstr "Stückliste kontrolliert von" -#: part/models.py:1071 +#: part/models.py:1114 msgid "BOM checked date" msgstr "BOM Kontrolldatum" -#: part/models.py:1087 +#: part/models.py:1130 msgid "Creation User" msgstr "Erstellungs-Nutzer" -#: part/models.py:1097 +#: part/models.py:1140 msgid "Owner responsible for this part" msgstr "Verantwortlicher Besitzer für dieses Teil" -#: part/models.py:1102 part/templates/part/part_base.html:339 +#: part/models.py:1145 part/templates/part/part_base.html:339 #: stock/templates/stock/item_base.html:451 -#: templates/js/translated/part.js:2471 +#: templates/js/translated/part.js:2470 msgid "Last Stocktake" msgstr "Letzte Inventur" -#: part/models.py:1975 +#: part/models.py:2018 msgid "Sell multiple" msgstr "Mehrere verkaufen" -#: part/models.py:2994 +#: part/models.py:3037 msgid "Currency used to cache pricing calculations" msgstr "Währung für die Berechnung der Preise im Cache" -#: part/models.py:3010 +#: part/models.py:3053 msgid "Minimum BOM Cost" msgstr "Minimale Stücklisten Kosten" -#: part/models.py:3011 +#: part/models.py:3054 msgid "Minimum cost of component parts" msgstr "Minimale Kosten für Teile" -#: part/models.py:3017 +#: part/models.py:3060 msgid "Maximum BOM Cost" msgstr "Maximale Stücklisten Kosten" -#: part/models.py:3018 +#: part/models.py:3061 msgid "Maximum cost of component parts" msgstr "Maximale Kosten für Teile" -#: part/models.py:3024 +#: part/models.py:3067 msgid "Minimum Purchase Cost" msgstr "Minimale Einkaufskosten" -#: part/models.py:3025 +#: part/models.py:3068 msgid "Minimum historical purchase cost" msgstr "Minimale historische Kaufkosten" -#: part/models.py:3031 +#: part/models.py:3074 msgid "Maximum Purchase Cost" msgstr "Maximale Einkaufskosten" -#: part/models.py:3032 +#: part/models.py:3075 msgid "Maximum historical purchase cost" msgstr "Maximale historische Einkaufskosten" -#: part/models.py:3038 +#: part/models.py:3081 msgid "Minimum Internal Price" msgstr "Minimaler interner Preis" -#: part/models.py:3039 +#: part/models.py:3082 msgid "Minimum cost based on internal price breaks" msgstr "Minimale Kosten basierend auf den internen Staffelpreisen" -#: part/models.py:3045 +#: part/models.py:3088 msgid "Maximum Internal Price" msgstr "Maximaler interner Preis" -#: part/models.py:3046 +#: part/models.py:3089 msgid "Maximum cost based on internal price breaks" msgstr "Maximale Kosten basierend auf internen Preisstaffeln" -#: part/models.py:3052 +#: part/models.py:3095 msgid "Minimum Supplier Price" msgstr "Minimaler Lieferantenpreis" -#: part/models.py:3053 +#: part/models.py:3096 msgid "Minimum price of part from external suppliers" msgstr "Mindestpreis für Teil von externen Lieferanten" -#: part/models.py:3059 +#: part/models.py:3102 msgid "Maximum Supplier Price" msgstr "Maximaler Lieferantenpreis" -#: part/models.py:3060 +#: part/models.py:3103 msgid "Maximum price of part from external suppliers" msgstr "Maximaler Preis für Teil von externen Lieferanten" -#: part/models.py:3066 +#: part/models.py:3109 msgid "Minimum Variant Cost" msgstr "Minimale Variantenkosten" -#: part/models.py:3067 +#: part/models.py:3110 msgid "Calculated minimum cost of variant parts" msgstr "Berechnete minimale Kosten für Variantenteile" -#: part/models.py:3073 +#: part/models.py:3116 msgid "Maximum Variant Cost" msgstr "Maximale Variantenkosten" -#: part/models.py:3074 +#: part/models.py:3117 msgid "Calculated maximum cost of variant parts" msgstr "Berechnete maximale Kosten für Variantenteile" -#: part/models.py:3081 +#: part/models.py:3124 msgid "Override minimum cost" msgstr "Mindestkosten überschreiben" -#: part/models.py:3088 +#: part/models.py:3131 msgid "Override maximum cost" msgstr "Maximale Kosten überschreiben" -#: part/models.py:3095 +#: part/models.py:3138 msgid "Calculated overall minimum cost" msgstr "Berechnete Mindestkosten" -#: part/models.py:3102 +#: part/models.py:3145 msgid "Calculated overall maximum cost" msgstr "Berechnete Maximalkosten" -#: part/models.py:3108 +#: part/models.py:3151 msgid "Minimum Sale Price" msgstr "Mindestverkaufspreis" -#: part/models.py:3109 +#: part/models.py:3152 msgid "Minimum sale price based on price breaks" msgstr "Mindestverkaufspreis basierend auf Staffelpreisen" -#: part/models.py:3115 +#: part/models.py:3158 msgid "Maximum Sale Price" msgstr "Maximaler Verkaufspreis" -#: part/models.py:3116 +#: part/models.py:3159 msgid "Maximum sale price based on price breaks" msgstr "Maximalverkaufspreis basierend auf Staffelpreisen" -#: part/models.py:3122 +#: part/models.py:3165 msgid "Minimum Sale Cost" msgstr "Mindestverkaufskosten" -#: part/models.py:3123 +#: part/models.py:3166 msgid "Minimum historical sale price" msgstr "Minimaler historischer Verkaufspreis" -#: part/models.py:3129 +#: part/models.py:3172 msgid "Maximum Sale Cost" msgstr "Maximale Verkaufskosten" -#: part/models.py:3130 +#: part/models.py:3173 msgid "Maximum historical sale price" msgstr "Maximaler historischer Verkaufspreis" -#: part/models.py:3149 +#: part/models.py:3192 msgid "Part for stocktake" msgstr "Teil für die Inventur" -#: part/models.py:3154 +#: part/models.py:3197 msgid "Item Count" msgstr "Stückzahl" -#: part/models.py:3155 +#: part/models.py:3198 msgid "Number of individual stock entries at time of stocktake" msgstr "Anzahl einzelner Bestandseinträge zum Zeitpunkt der Inventur" -#: part/models.py:3163 +#: part/models.py:3206 msgid "Total available stock at time of stocktake" msgstr "Insgesamt verfügbarer Lagerbestand zum Zeitpunkt der Inventur" -#: part/models.py:3167 part/models.py:3250 +#: part/models.py:3210 part/models.py:3293 #: part/templates/part/part_scheduling.html:13 -#: report/templates/report/inventree_test_report_base.html:106 +#: report/templates/report/inventree_test_report.html:106 #: templates/InvenTree/settings/plugin_settings.html:37 #: templates/InvenTree/settings/settings_staff_js.html:540 #: templates/js/translated/part.js:1085 templates/js/translated/pricing.js:826 #: templates/js/translated/pricing.js:950 -#: templates/js/translated/purchase_order.js:1732 +#: templates/js/translated/purchase_order.js:1731 #: templates/js/translated/stock.js:2821 msgid "Date" msgstr "Datum" -#: part/models.py:3168 +#: part/models.py:3211 msgid "Date stocktake was performed" msgstr "Datum der Inventur" -#: part/models.py:3176 +#: part/models.py:3219 msgid "Additional notes" msgstr "Zusätzliche Notizen" -#: part/models.py:3186 +#: part/models.py:3229 msgid "User who performed this stocktake" msgstr "Benutzer, der diese Inventur durchgeführt hat" -#: part/models.py:3192 +#: part/models.py:3235 msgid "Minimum Stock Cost" msgstr "Mindestbestandswert" -#: part/models.py:3193 +#: part/models.py:3236 msgid "Estimated minimum cost of stock on hand" msgstr "Geschätzter Mindestwert des vorhandenen Bestands" -#: part/models.py:3199 +#: part/models.py:3242 msgid "Maximum Stock Cost" msgstr "Maximaler Bestandswert" -#: part/models.py:3200 +#: part/models.py:3243 msgid "Estimated maximum cost of stock on hand" msgstr "Geschätzter Maximalwert des vorhandenen Bestands" -#: part/models.py:3256 templates/InvenTree/settings/settings_staff_js.html:529 +#: part/models.py:3299 templates/InvenTree/settings/settings_staff_js.html:529 msgid "Report" msgstr "Bericht" -#: part/models.py:3257 +#: part/models.py:3300 msgid "Stocktake report file (generated internally)" msgstr "Inventur-Berichtsdatei (intern generiert)" -#: part/models.py:3262 templates/InvenTree/settings/settings_staff_js.html:536 +#: part/models.py:3305 templates/InvenTree/settings/settings_staff_js.html:536 msgid "Part Count" msgstr "Anzahl der Teile" -#: part/models.py:3263 +#: part/models.py:3306 msgid "Number of parts covered by stocktake" msgstr "Anzahl der Teile, die von der Inventur abgedeckt werden" -#: part/models.py:3273 +#: part/models.py:3316 msgid "User who requested this stocktake report" msgstr "Benutzer, der diesen Inventurbericht angefordert hat" -#: part/models.py:3435 +#: part/models.py:3478 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:3446 +#: part/models.py:3489 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:3457 +#: part/models.py:3500 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:3474 templates/js/translated/part.js:2879 +#: part/models.py:3517 templates/js/translated/part.js:2878 msgid "Test Name" msgstr "Test-Name" -#: part/models.py:3475 +#: part/models.py:3518 msgid "Enter a name for the test" msgstr "Namen für diesen Test eingeben" -#: part/models.py:3481 +#: part/models.py:3524 msgid "Test Key" msgstr "Testschlüssel" -#: part/models.py:3482 +#: part/models.py:3525 msgid "Simplified key for the test" msgstr "Vereinfachter Schlüssel zum Test" -#: part/models.py:3489 +#: part/models.py:3532 msgid "Test Description" msgstr "Test-Beschreibung" -#: part/models.py:3490 +#: part/models.py:3533 msgid "Enter description for this test" msgstr "Beschreibung für diesen Test eingeben" -#: part/models.py:3494 +#: part/models.py:3537 report/models.py:208 +#: templates/js/translated/part.js:2899 +#: templates/js/translated/table_filters.js:481 +msgid "Enabled" +msgstr "Aktiviert" + +#: part/models.py:3537 msgid "Is this test enabled?" msgstr "Ist dieser Test aktiviert?" -#: part/models.py:3499 templates/js/translated/part.js:2908 +#: part/models.py:3542 templates/js/translated/part.js:2907 #: templates/js/translated/table_filters.js:477 msgid "Required" msgstr "Benötigt" -#: part/models.py:3500 +#: part/models.py:3543 msgid "Is this test required to pass?" msgstr "Muss dieser Test erfolgreich sein?" -#: part/models.py:3505 templates/js/translated/part.js:2916 +#: part/models.py:3548 templates/js/translated/part.js:2915 msgid "Requires Value" msgstr "Erfordert Wert" -#: part/models.py:3506 +#: part/models.py:3549 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:3511 templates/js/translated/part.js:2923 +#: part/models.py:3554 templates/js/translated/part.js:2922 msgid "Requires Attachment" msgstr "Anhang muss eingegeben werden" -#: part/models.py:3513 +#: part/models.py:3556 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:3560 +#: part/models.py:3603 msgid "Checkbox parameters cannot have units" msgstr "Checkbox-Parameter können keine Einheiten haben" -#: part/models.py:3565 +#: part/models.py:3608 msgid "Checkbox parameters cannot have choices" msgstr "Checkbox-Parameter können keine Auswahl haben" -#: part/models.py:3585 +#: part/models.py:3628 msgid "Choices must be unique" msgstr "Auswahl muss einzigartig sein" -#: part/models.py:3602 +#: part/models.py:3645 msgid "Parameter template name must be unique" msgstr "Vorlagen-Name des Parameters muss eindeutig sein" -#: part/models.py:3617 +#: part/models.py:3660 msgid "Parameter Name" msgstr "Name des Parameters" -#: part/models.py:3624 +#: part/models.py:3667 msgid "Physical units for this parameter" msgstr "Physikalische Einheiten für diesen Parameter" -#: part/models.py:3632 +#: part/models.py:3675 msgid "Parameter description" msgstr "Parameter-Beschreibung" -#: part/models.py:3638 templates/js/translated/part.js:1627 +#: part/models.py:3681 templates/js/translated/part.js:1627 #: templates/js/translated/table_filters.js:825 msgid "Checkbox" -msgstr "" +msgstr "Checkbox" -#: part/models.py:3639 +#: part/models.py:3682 msgid "Is this parameter a checkbox?" msgstr "Ist dieser Parameter eine Checkbox?" -#: part/models.py:3644 templates/js/translated/part.js:1636 +#: part/models.py:3687 templates/js/translated/part.js:1636 msgid "Choices" msgstr "Auswahlmöglichkeiten" -#: part/models.py:3645 +#: part/models.py:3688 msgid "Valid choices for this parameter (comma-separated)" msgstr "Gültige Optionen für diesen Parameter (durch Kommas getrennt)" -#: part/models.py:3722 +#: part/models.py:3765 msgid "Invalid choice for parameter value" msgstr "Ungültige Auswahl für Parameterwert" -#: part/models.py:3765 +#: part/models.py:3808 msgid "Parent Part" msgstr "Ausgangsteil" -#: part/models.py:3773 part/models.py:3874 part/models.py:3875 +#: part/models.py:3816 part/models.py:3917 part/models.py:3918 #: templates/InvenTree/settings/settings_staff_js.html:295 msgid "Parameter Template" msgstr "Parameter Vorlage" -#: part/models.py:3778 +#: part/models.py:3821 msgid "Data" msgstr "Wert" -#: part/models.py:3779 +#: part/models.py:3822 msgid "Parameter Value" msgstr "Parameter Wert" -#: part/models.py:3881 templates/InvenTree/settings/settings_staff_js.html:304 +#: part/models.py:3924 templates/InvenTree/settings/settings_staff_js.html:304 msgid "Default Value" msgstr "Standard-Wert" -#: part/models.py:3882 +#: part/models.py:3925 msgid "Default Parameter Value" msgstr "Standard Parameter Wert" -#: part/models.py:3920 +#: part/models.py:3963 msgid "Part ID or part name" msgstr "Teilnummer oder Teilname" -#: part/models.py:3921 +#: part/models.py:3964 msgid "Unique part ID value" msgstr "Eindeutige Teil-ID" -#: part/models.py:3923 +#: part/models.py:3966 msgid "Part IPN value" msgstr "IPN-Wert des Teils" -#: part/models.py:3924 +#: part/models.py:3967 msgid "Level" msgstr "Stufe" -#: part/models.py:3924 +#: part/models.py:3967 msgid "BOM level" msgstr "Stücklistenebene" -#: part/models.py:4014 +#: part/models.py:4057 msgid "Select parent part" msgstr "Ausgangsteil auswählen" -#: part/models.py:4024 +#: part/models.py:4067 msgid "Sub part" msgstr "Untergeordnetes Teil" -#: part/models.py:4025 +#: part/models.py:4068 msgid "Select part to be used in BOM" msgstr "Teil für die Nutzung in der Stückliste auswählen" -#: part/models.py:4036 +#: part/models.py:4079 msgid "BOM quantity for this BOM item" msgstr "Stücklisten-Anzahl für dieses Stücklisten-Teil" -#: part/models.py:4042 +#: part/models.py:4085 msgid "This BOM item is optional" msgstr "Diese Stücklisten-Position ist optional" -#: part/models.py:4048 +#: part/models.py:4091 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:4055 part/templates/part/upload_bom.html:55 +#: part/models.py:4098 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "Überschuss" -#: part/models.py:4056 +#: part/models.py:4099 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "Geschätzter Ausschuss (absolut oder prozentual)" -#: part/models.py:4063 +#: part/models.py:4106 msgid "BOM item reference" msgstr "Referenz der Postion auf der Stückliste" -#: part/models.py:4071 +#: part/models.py:4114 msgid "BOM item notes" msgstr "Notizen zur Stücklisten-Position" -#: part/models.py:4077 +#: part/models.py:4120 msgid "Checksum" msgstr "Prüfsumme" -#: part/models.py:4078 +#: part/models.py:4121 msgid "BOM line checksum" msgstr "Prüfsumme der Stückliste" -#: part/models.py:4083 templates/js/translated/table_filters.js:174 +#: part/models.py:4126 templates/js/translated/table_filters.js:174 msgid "Validated" msgstr "überprüft" -#: part/models.py:4084 +#: part/models.py:4127 msgid "This BOM item has been validated" msgstr "Diese Stücklistenposition wurde validiert" -#: part/models.py:4089 part/templates/part/upload_bom.html:57 +#: part/models.py:4132 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:4090 +#: part/models.py:4133 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:4095 part/templates/part/upload_bom.html:56 +#: part/models.py:4138 part/templates/part/upload_bom.html:56 #: templates/js/translated/bom.js:1046 msgid "Allow Variants" msgstr "Varianten zulassen" -#: part/models.py:4096 +#: part/models.py:4139 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:4181 stock/models.py:647 +#: part/models.py:4224 stock/models.py:664 msgid "Quantity must be integer value for trackable parts" msgstr "Menge muss eine Ganzzahl sein" -#: part/models.py:4191 part/models.py:4193 +#: part/models.py:4234 part/models.py:4236 msgid "Sub part must be specified" msgstr "Zuliefererteil muss festgelegt sein" -#: part/models.py:4333 +#: part/models.py:4376 msgid "BOM Item Substitute" msgstr "Stücklisten Ersatzteile" -#: part/models.py:4354 +#: part/models.py:4397 msgid "Substitute part cannot be the same as the master part" msgstr "Ersatzteil kann nicht identisch mit dem Hauptteil sein" -#: part/models.py:4367 +#: part/models.py:4410 msgid "Parent BOM item" msgstr "Übergeordnete Stücklisten Position" -#: part/models.py:4375 +#: part/models.py:4418 msgid "Substitute part" msgstr "Ersatzteil" -#: part/models.py:4391 +#: part/models.py:4434 msgid "Part 1" msgstr "Teil 1" -#: part/models.py:4399 +#: part/models.py:4442 msgid "Part 2" msgstr "Teil 2" -#: part/models.py:4400 +#: part/models.py:4443 msgid "Select Related Part" msgstr "verknüpftes Teil auswählen" -#: part/models.py:4419 +#: part/models.py:4462 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:4424 +#: part/models.py:4467 msgid "Duplicate relationship already exists" msgstr "Doppelte Beziehung existiert bereits" @@ -6821,7 +6699,7 @@ msgstr "Ergebnisse" msgid "Number of results recorded against this template" msgstr "Anzahl der Ergebnisse, die in dieser Vorlage aufgezeichnet wurden" -#: part/serializers.py:210 part/serializers.py:228 stock/serializers.py:406 +#: part/serializers.py:210 part/serializers.py:228 stock/serializers.py:535 msgid "Purchase currency of this stock item" msgstr "Kaufwährung dieses Lagerartikels" @@ -6837,299 +6715,299 @@ msgstr "Keine Teile ausgewählt" msgid "Select category" msgstr "Kategorie auswählen" -#: part/serializers.py:437 +#: part/serializers.py:442 msgid "Original Part" msgstr "Originalteil" -#: part/serializers.py:438 +#: part/serializers.py:443 msgid "Select original part to duplicate" msgstr "Originalteil zum Duplizieren auswählen" -#: part/serializers.py:443 +#: part/serializers.py:448 msgid "Copy Image" msgstr "Bild kopieren" -#: part/serializers.py:444 +#: part/serializers.py:449 msgid "Copy image from original part" msgstr "Bild vom Originalteil kopieren" -#: part/serializers.py:450 part/templates/part/detail.html:277 +#: part/serializers.py:455 part/templates/part/detail.html:277 msgid "Copy BOM" msgstr "Stückliste kopieren" -#: part/serializers.py:451 +#: part/serializers.py:456 msgid "Copy bill of materials from original part" msgstr "Stückliste vom Originalteil kopieren" -#: part/serializers.py:457 +#: part/serializers.py:462 msgid "Copy Parameters" msgstr "Parameter kopieren" -#: part/serializers.py:458 +#: part/serializers.py:463 msgid "Copy parameter data from original part" msgstr "Parameterdaten vom Originalteil kopieren" -#: part/serializers.py:464 +#: part/serializers.py:469 msgid "Copy Notes" msgstr "Anmerkungen kopieren" -#: part/serializers.py:465 +#: part/serializers.py:470 msgid "Copy notes from original part" msgstr "Notizen aus Originalteil kopieren" -#: part/serializers.py:478 +#: part/serializers.py:488 msgid "Initial Stock Quantity" msgstr "Start-Bestandsmenge" -#: part/serializers.py:480 +#: part/serializers.py:490 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:487 +#: part/serializers.py:497 msgid "Initial Stock Location" msgstr "Initialer Lagerort" -#: part/serializers.py:488 +#: part/serializers.py:498 msgid "Specify initial stock location for this Part" msgstr "Lagerstandort für dieses Teil angeben" -#: part/serializers.py:500 +#: part/serializers.py:515 msgid "Select supplier (or leave blank to skip)" msgstr "Lieferant auswählen (oder leer lassen, um zu überspringen)" -#: part/serializers.py:516 +#: part/serializers.py:531 msgid "Select manufacturer (or leave blank to skip)" msgstr "Hersteller auswählen (oder leer lassen, um zu überspringen)" -#: part/serializers.py:526 +#: part/serializers.py:541 msgid "Manufacturer part number" msgstr "Hersteller-Teilenummer" -#: part/serializers.py:533 +#: part/serializers.py:548 msgid "Selected company is not a valid supplier" msgstr "Ausgewählte Firma ist kein gültiger Lieferant" -#: part/serializers.py:542 +#: part/serializers.py:557 msgid "Selected company is not a valid manufacturer" msgstr "Ausgewählte Firma ist kein gültiger Hersteller" -#: part/serializers.py:553 +#: part/serializers.py:568 msgid "Manufacturer part matching this MPN already exists" msgstr "Herstellerteil mit dieser MPN existiert bereits" -#: part/serializers.py:560 +#: part/serializers.py:575 msgid "Supplier part matching this SKU already exists" msgstr "Lieferantenteil mit dieser SKU existiert bereits" -#: part/serializers.py:823 +#: part/serializers.py:838 msgid "External Stock" msgstr "Externes Lager" -#: part/serializers.py:825 +#: part/serializers.py:840 msgid "Unallocated Stock" msgstr "Nicht zugewiesenes Lager" -#: part/serializers.py:828 +#: part/serializers.py:843 msgid "Variant Stock" msgstr "Alternatives Lager" -#: part/serializers.py:856 part/templates/part/copy_part.html:9 +#: part/serializers.py:873 part/templates/part/copy_part.html:9 #: templates/js/translated/part.js:471 msgid "Duplicate Part" msgstr "Teil duplizieren" -#: part/serializers.py:857 +#: part/serializers.py:874 msgid "Copy initial data from another Part" msgstr "Initiale Daten von anderem Teil kopieren" -#: part/serializers.py:863 templates/js/translated/part.js:102 +#: part/serializers.py:880 templates/js/translated/part.js:102 msgid "Initial Stock" msgstr "Initialer Lagerbestand" -#: part/serializers.py:864 +#: part/serializers.py:881 msgid "Create Part with initial stock quantity" msgstr "Erstelle Teil mit Ausgangsbestand" -#: part/serializers.py:870 +#: part/serializers.py:887 msgid "Supplier Information" msgstr "Lieferanteninformationen" -#: part/serializers.py:871 +#: part/serializers.py:888 msgid "Add initial supplier information for this part" msgstr "Lieferanteninformationen zu diesem Teil hinzufügen" -#: part/serializers.py:879 +#: part/serializers.py:896 msgid "Copy Category Parameters" msgstr "Kategorieparameter kopieren" -#: part/serializers.py:880 +#: part/serializers.py:897 msgid "Copy parameter templates from selected part category" msgstr "Parametervorlagen aus der ausgewählten Teilkategorie kopieren" -#: part/serializers.py:885 +#: part/serializers.py:902 msgid "Existing Image" msgstr "Vorhandenes Bild" -#: part/serializers.py:886 +#: part/serializers.py:903 msgid "Filename of an existing part image" msgstr "Dateiname eines vorhandenen Teilbildes" -#: part/serializers.py:903 +#: part/serializers.py:920 msgid "Image file does not exist" msgstr "Bilddatei existiert nicht" -#: part/serializers.py:1109 +#: part/serializers.py:1126 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:1119 +#: part/serializers.py:1136 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:1129 +#: part/serializers.py:1146 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:1135 +#: part/serializers.py:1152 msgid "Exclude External Stock" msgstr "Externen Bestand ausschließen" -#: part/serializers.py:1136 +#: part/serializers.py:1153 msgid "Exclude stock items in external locations" msgstr "Lagerartikel an externen Orten ausschließen" -#: part/serializers.py:1141 +#: part/serializers.py:1158 msgid "Generate Report" msgstr "Bericht generieren" -#: part/serializers.py:1142 +#: part/serializers.py:1159 msgid "Generate report file containing calculated stocktake data" msgstr "Erstelle Berichtsdatei mit berechneten Inventurdaten" -#: part/serializers.py:1147 +#: part/serializers.py:1164 msgid "Update Parts" msgstr "Teile aktualisieren" -#: part/serializers.py:1148 +#: part/serializers.py:1165 msgid "Update specified parts with calculated stocktake data" msgstr "Angegebene Teile mit berechneten Inventurdaten aktualisieren" -#: part/serializers.py:1156 +#: part/serializers.py:1173 msgid "Stocktake functionality is not enabled" msgstr "Inventur-Funktionalität ist nicht aktiviert" -#: part/serializers.py:1262 +#: part/serializers.py:1279 msgid "Override calculated value for minimum price" msgstr "Berechneten Wert für Mindestpreis überschreiben" -#: part/serializers.py:1269 +#: part/serializers.py:1286 msgid "Minimum price currency" msgstr "Mindestpreis Währung" -#: part/serializers.py:1277 +#: part/serializers.py:1294 msgid "Override calculated value for maximum price" msgstr "Berechneten Wert für maximalen Preis überschreiben" -#: part/serializers.py:1284 +#: part/serializers.py:1301 msgid "Maximum price currency" msgstr "Maximalpreis Währung" -#: part/serializers.py:1313 +#: part/serializers.py:1330 msgid "Update" msgstr "Aktualisieren" -#: part/serializers.py:1314 +#: part/serializers.py:1331 msgid "Update pricing for this part" msgstr "Preis für dieses Teil aktualisieren" -#: part/serializers.py:1337 +#: part/serializers.py:1354 #, 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:1344 +#: part/serializers.py:1361 msgid "Minimum price must not be greater than maximum price" msgstr "Mindestpreis darf nicht größer als der Maximalpreis sein" -#: part/serializers.py:1347 +#: part/serializers.py:1364 msgid "Maximum price must not be less than minimum price" msgstr "Der Maximalpreis darf nicht kleiner als der Mindestpreis sein" -#: part/serializers.py:1714 +#: part/serializers.py:1731 msgid "Select part to copy BOM from" msgstr "Teil auswählen, von dem Stückliste kopiert wird" -#: part/serializers.py:1722 +#: part/serializers.py:1739 msgid "Remove Existing Data" msgstr "Bestehende Daten entfernen" -#: part/serializers.py:1723 +#: part/serializers.py:1740 msgid "Remove existing BOM items before copying" msgstr "Bestehende Stücklisten-Positionen vor dem Kopieren entfernen" -#: part/serializers.py:1728 +#: part/serializers.py:1745 msgid "Include Inherited" msgstr "Vererbtes einschließen" -#: part/serializers.py:1729 +#: part/serializers.py:1746 msgid "Include BOM items which are inherited from templated parts" msgstr "Stücklisten-Positionen einbeziehen, die von Vorlage-Teilen geerbt werden" -#: part/serializers.py:1734 +#: part/serializers.py:1751 msgid "Skip Invalid Rows" msgstr "Ungültige Zeilen überspringen" -#: part/serializers.py:1735 +#: part/serializers.py:1752 msgid "Enable this option to skip invalid rows" msgstr "Aktiviere diese Option, um ungültige Zeilen zu überspringen" -#: part/serializers.py:1740 +#: part/serializers.py:1757 msgid "Copy Substitute Parts" msgstr "Ersatzteile kopieren" -#: part/serializers.py:1741 +#: part/serializers.py:1758 msgid "Copy substitute parts when duplicate BOM items" msgstr "Ersatzteile beim Duplizieren von Stücklisten-Positionen kopieren" -#: part/serializers.py:1775 +#: part/serializers.py:1792 msgid "Clear Existing BOM" msgstr "Bestehende Stückliste löschen" -#: part/serializers.py:1776 +#: part/serializers.py:1793 msgid "Delete existing BOM items before uploading" msgstr "Bestehende Stücklisten-Positionen vor dem Importieren entfernen" -#: part/serializers.py:1806 +#: part/serializers.py:1823 msgid "No part column specified" msgstr "Keine Teilspalte angegeben" -#: part/serializers.py:1850 +#: part/serializers.py:1867 msgid "Multiple matching parts found" msgstr "Mehrere übereinstimmende Teile gefunden" -#: part/serializers.py:1853 +#: part/serializers.py:1870 msgid "No matching part found" msgstr "Keine passenden Teile gefunden" -#: part/serializers.py:1856 +#: part/serializers.py:1873 msgid "Part is not designated as a component" msgstr "Teil ist nicht als Komponente angelegt" -#: part/serializers.py:1865 +#: part/serializers.py:1882 msgid "Quantity not provided" msgstr "Menge nicht angegeben" -#: part/serializers.py:1873 +#: part/serializers.py:1890 msgid "Invalid quantity" msgstr "Ungültige Menge" -#: part/serializers.py:1894 +#: part/serializers.py:1911 msgid "At least one BOM item is required" msgstr "Mindestens eine Stückliste-Position ist erforderlich" #: part/stocktake.py:224 templates/js/translated/part.js:1066 #: templates/js/translated/part.js:1821 templates/js/translated/part.js:1877 -#: templates/js/translated/purchase_order.js:2085 +#: templates/js/translated/purchase_order.js:2084 msgid "Total Quantity" msgstr "Gesamtstückzahl" @@ -7281,7 +7159,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:2215 users/models.py:204 +#: templates/js/translated/stock.js:2216 users/models.py:204 msgid "Stocktake" msgstr "Inventur" @@ -7379,15 +7257,15 @@ msgstr "Zulieferer" msgid "Part Manufacturers" msgstr "Teil-Hersteller" -#: part/templates/part/detail.html:659 +#: part/templates/part/detail.html:655 msgid "Related Part" msgstr "Verknüpftes Teil" -#: part/templates/part/detail.html:667 +#: part/templates/part/detail.html:663 msgid "Add Related Part" msgstr "Verknüpftes Teil hinzufügen" -#: part/templates/part/detail.html:752 +#: part/templates/part/detail.html:748 msgid "Add Test Result Template" msgstr "Testergebnis-Vorlage hinzufügen" @@ -7424,7 +7302,7 @@ msgstr "Teile-Importvorlage herunterladen" #: templates/js/translated/bom.js:309 templates/js/translated/bom.js:343 #: templates/js/translated/order.js:129 templates/js/translated/tables.js:189 msgid "Format" -msgstr "" +msgstr "Format" #: part/templates/part/import_wizard/part_upload.html:93 #: templates/js/translated/bom.js:310 templates/js/translated/bom.js:344 @@ -7446,7 +7324,7 @@ msgstr "Benachrichtigungen für dieses Teil abonnieren" #: part/templates/part/part_base.html:52 #: stock/templates/stock/item_base.html:62 -#: stock/templates/stock/location.html:74 +#: stock/templates/stock/location.html:74 templates/js/translated/label.js:143 msgid "Print Label" msgstr "Label drucken" @@ -7468,7 +7346,7 @@ msgstr "Bestand zählen" msgid "Transfer part stock" msgstr "Teilbestand verschieben" -#: part/templates/part/part_base.html:91 templates/js/translated/part.js:2293 +#: part/templates/part/part_base.html:91 templates/js/translated/part.js:2292 msgid "Part actions" msgstr "Teile Aktionen" @@ -7517,7 +7395,7 @@ msgid "Part is virtual (not a physical part)" msgstr "Teil ist virtuell (kein physisches Teil)" #: part/templates/part/part_base.html:163 -#: part/templates/part/part_base.html:682 +#: part/templates/part/part_base.html:681 msgid "Show Part Details" msgstr "Teildetails anzeigen" @@ -7540,7 +7418,7 @@ msgid "Minimum stock level" msgstr "Minimaler Bestand" #: part/templates/part/part_base.html:322 templates/js/translated/bom.js:1071 -#: templates/js/translated/part.js:1264 templates/js/translated/part.js:2444 +#: templates/js/translated/part.js:1264 templates/js/translated/part.js:2443 #: templates/js/translated/pricing.js:391 #: templates/js/translated/pricing.js:1054 msgid "Price Range" @@ -7563,19 +7441,19 @@ msgstr "QR-Code Teil" msgid "Link Barcode to Part" msgstr "Barcode mit Teil verknüpfen" -#: part/templates/part/part_base.html:512 +#: part/templates/part/part_base.html:511 msgid "Calculate" msgstr "Berechnen" -#: part/templates/part/part_base.html:529 +#: part/templates/part/part_base.html:528 msgid "Remove associated image from this part" msgstr "Verknüpftes Bild von diesem Teil entfernen" -#: part/templates/part/part_base.html:580 +#: part/templates/part/part_base.html:579 msgid "No matching images found" msgstr "Keine passenden Bilder gefunden" -#: part/templates/part/part_base.html:676 +#: part/templates/part/part_base.html:675 msgid "Hide Part Details" msgstr "Teildetails ausblenden" @@ -7634,8 +7512,8 @@ msgstr "Varianten" #: 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 +#: templates/js/translated/part.js:2391 templates/js/translated/stock.js:1059 +#: templates/js/translated/stock.js:2070 templates/navbar.html:31 msgid "Stock" msgstr "Bestand" @@ -7681,7 +7559,7 @@ msgstr "Bearbeiten" #: stock/templates/stock/item_base.html:446 #: templates/js/translated/company.js:1703 #: templates/js/translated/company.js:1713 -#: templates/js/translated/stock.js:2245 +#: templates/js/translated/stock.js:2246 msgid "Last Updated" msgstr "Zuletzt aktualisiert" @@ -7691,11 +7569,11 @@ msgstr "Preiskategorie" #: part/templates/part/prices.html:38 part/templates/part/prices.html:128 msgid "Minimum" -msgstr "" +msgstr "Minimum" #: part/templates/part/prices.html:39 part/templates/part/prices.html:129 msgid "Maximum" -msgstr "" +msgstr "Maximum" #: part/templates/part/prices.html:51 part/templates/part/prices.html:174 msgid "Internal Pricing" @@ -7753,7 +7631,7 @@ msgid "Update Pricing" msgstr "Preise aktualisieren" #: part/templates/part/stock_count.html:7 -#: templates/js/translated/model_renderers.js:221 +#: templates/js/translated/model_renderers.js:227 #: templates/js/translated/part.js:704 templates/js/translated/part.js:2140 #: templates/js/translated/part.js:2142 msgid "No Stock" @@ -7833,7 +7711,7 @@ msgstr "Teilbild nicht gefunden" msgid "Part Pricing" msgstr "Teilbepreisung" -#: plugin/api.py:168 +#: plugin/api.py:170 msgid "Plugin cannot be deleted as it is currently active" msgstr "Das Plugin kann nicht gelöscht werden, da es derzeit aktiv ist" @@ -7899,8 +7777,8 @@ msgstr "Barcode stimmt nicht mit einem vorhandenen Lagerartikel überein" msgid "Stock item does not match line item" msgstr "Lagerartikel stimmt nicht mit dem Element überein" -#: plugin/base/barcodes/api.py:550 templates/js/translated/build.js:2590 -#: templates/js/translated/sales_order.js:1917 +#: plugin/base/barcodes/api.py:550 templates/js/translated/build.js:2589 +#: templates/js/translated/sales_order.js:1953 msgid "Insufficient stock available" msgstr "Unzureichender Bestand verfügbar" @@ -7994,25 +7872,25 @@ msgstr "Sendung wurde bereits geliefert" msgid "Quantity to allocate" msgstr "Zugewiesene Menge" -#: plugin/base/label/label.py:39 +#: plugin/base/label/label.py:39 templates/js/translated/label.js:155 msgid "Label printing failed" msgstr "Labeldruck fehlgeschlagen" -#: plugin/base/label/mixins.py:63 +#: plugin/base/label/mixins.py:56 msgid "Error rendering label to PDF" msgstr "Fehler beim Rendern des Etikett als PDF" -#: plugin/base/label/mixins.py:76 +#: plugin/base/label/mixins.py:70 msgid "Error rendering label to 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 Etikett als PNG" +#: plugin/base/label/mixins.py:151 +msgid "No items provided to print" +msgstr "" #: plugin/builtin/barcodes/inventree_barcode.py:25 msgid "InvenTree Barcodes" -msgstr "" +msgstr "InvenTree Barcodes" #: plugin/builtin/barcodes/inventree_barcode.py:26 msgid "Provides native support for barcodes" @@ -8021,7 +7899,7 @@ msgstr "Bietet native Unterstützung für Barcodes" #: 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_label.py:22 #: plugin/builtin/labels/inventree_machine.py:64 #: plugin/builtin/labels/label_sheet.py:63 #: plugin/builtin/suppliers/digikey.py:19 plugin/builtin/suppliers/lcsc.py:21 @@ -8075,19 +7953,19 @@ msgstr "InvenTree Währungsumstellung" msgid "Default currency exchange integration" msgstr "Standard-Wechselkursintegration" -#: plugin/builtin/labels/inventree_label.py:20 +#: plugin/builtin/labels/inventree_label.py:19 msgid "InvenTree PDF label printer" msgstr "InvenTree PDF-Etikettendrucker" -#: plugin/builtin/labels/inventree_label.py:21 +#: plugin/builtin/labels/inventree_label.py:20 msgid "Provides native support for printing PDF labels" msgstr "Bietet native Unterstützung für das Drucken von PDF-Etiketten" -#: plugin/builtin/labels/inventree_label.py:29 +#: plugin/builtin/labels/inventree_label.py:28 msgid "Debug mode" msgstr "Debug-Modus" -#: plugin/builtin/labels/inventree_label.py:30 +#: plugin/builtin/labels/inventree_label.py:29 msgid "Enable debug mode - returns raw HTML instead of PDF" msgstr "Debug-Modus aktivieren - gibt Roh-HTML statt PDF zurück" @@ -8099,11 +7977,11 @@ msgstr "InvenTree Maschinen-Etikettendrucker" msgid "Provides support for printing using a machine" msgstr "Unterstützt das Drucken mit einer Maschine" -#: plugin/builtin/labels/inventree_machine.py:150 +#: plugin/builtin/labels/inventree_machine.py:151 msgid "last used" msgstr "Zuletzt benutzt" -#: plugin/builtin/labels/inventree_machine.py:167 +#: plugin/builtin/labels/inventree_machine.py:168 msgid "Options" msgstr "Optionen" @@ -8127,7 +8005,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:209 +#: plugin/builtin/labels/label_sheet.py:47 report/models.py:307 msgid "Landscape" msgstr "Querformat" @@ -8143,11 +8021,11 @@ msgstr "InvenTree Etikettendrucker" msgid "Arrays multiple labels onto a single sheet" msgstr "Anordnen mehrerer Etiketten auf einem einzigen Blatt" -#: plugin/builtin/labels/label_sheet.py:94 +#: plugin/builtin/labels/label_sheet.py:99 msgid "Label is too large for page size" msgstr "Label ist zu groß für Seitengröße" -#: plugin/builtin/labels/label_sheet.py:128 +#: plugin/builtin/labels/label_sheet.py:133 msgid "No labels were generated" msgstr "Es wurden keine Etiketten generiert" @@ -8240,61 +8118,62 @@ msgstr "Plugin kann nicht deinstalliert werden, da es momentan aktiv ist" msgid "Uninstalled plugin successfully" msgstr "Plugin erfolgreich deinstallieren" -#: plugin/models.py:30 +#: plugin/models.py:35 msgid "Plugin Configuration" msgstr "Plugin-Konfiguration" -#: plugin/models.py:31 +#: plugin/models.py:36 msgid "Plugin Configurations" msgstr "Plugin-Konfigurationen" -#: plugin/models.py:34 users/models.py:100 +#: plugin/models.py:42 users/models.py:100 msgid "Key" msgstr "Schlüssel" -#: plugin/models.py:34 +#: plugin/models.py:43 msgid "Key of plugin" msgstr "Schlüssel des Plugins" -#: plugin/models.py:42 +#: plugin/models.py:51 msgid "PluginName of the plugin" msgstr "Name des Plugins" -#: plugin/models.py:49 plugin/serializers.py:90 +#: plugin/models.py:58 plugin/serializers.py:90 msgid "Package Name" msgstr "Paket-Name" -#: plugin/models.py:51 +#: plugin/models.py:60 msgid "Name of the installed package, if the plugin was installed via PIP" msgstr "Name des installierten Paketes, wenn das Plugin über PIP installiert wurde" -#: plugin/models.py:56 +#: plugin/models.py:65 msgid "Is the plugin active" msgstr "Ist das Plugin aktiv" -#: plugin/models.py:147 templates/js/translated/table_filters.js:370 +#: plugin/models.py:156 templates/js/translated/table_filters.js:370 #: templates/js/translated/table_filters.js:504 msgid "Installed" msgstr "Installiert" -#: plugin/models.py:156 +#: plugin/models.py:165 msgid "Sample plugin" msgstr "Beispiel-Plugin" -#: plugin/models.py:164 +#: plugin/models.py:173 msgid "Builtin Plugin" msgstr "Integriertes Plugin" -#: plugin/models.py:172 +#: plugin/models.py:181 msgid "Package Plugin" msgstr "Paket-Plugin" -#: plugin/models.py:196 templates/InvenTree/settings/plugin_settings.html:9 +#: plugin/models.py:205 report/models.py:474 +#: templates/InvenTree/settings/plugin_settings.html:9 #: templates/js/translated/plugin.js:51 msgid "Plugin" -msgstr "" +msgstr "Plugin" -#: plugin/models.py:243 +#: plugin/models.py:252 msgid "Method" msgstr "Methode" @@ -8302,17 +8181,17 @@ msgstr "Methode" msgid "No author found" msgstr "Kein Autor gefunden" -#: plugin/registry.py:588 +#: plugin/registry.py:597 #, python-brace-format msgid "Plugin '{p}' is not compatible with the current InvenTree version {v}" msgstr "Plugin '{p}' ist nicht kompatibel mit der aktuellen InvenTree Version {v}" -#: plugin/registry.py:591 +#: plugin/registry.py:600 #, python-brace-format msgid "Plugin requires at least version {v}" msgstr "Plugin benötigt mindestens Version {v}" -#: plugin/registry.py:593 +#: plugin/registry.py:602 #, python-brace-format msgid "Plugin requires at most version {v}" msgstr "Plugin benötigt maximal Version {v}" @@ -8373,7 +8252,7 @@ msgstr "Name für das Plugin-Paket - kann auch einen Versionstext enthalten" #: templates/InvenTree/settings/plugin_settings.html:42 #: templates/js/translated/plugin.js:86 msgid "Version" -msgstr "" +msgstr "Version" #: plugin/serializers.py:101 msgid "Version specifier for the plugin. Leave blank for latest version." @@ -8395,279 +8274,363 @@ msgstr "Installation nicht bestätigt" msgid "Either packagename of URL must be provided" msgstr "Entweder Paketname oder URL muss angegeben werden" -#: plugin/serializers.py:156 +#: plugin/serializers.py:161 msgid "Full reload" msgstr "Komplett neu laden" -#: plugin/serializers.py:157 +#: plugin/serializers.py:162 msgid "Perform a full reload of the plugin registry" msgstr "Führe ein vollständiges Nachladen der Plugin-Registrierung durch" -#: plugin/serializers.py:163 +#: plugin/serializers.py:168 msgid "Force reload" msgstr "Neuladen erzwingen" -#: plugin/serializers.py:165 +#: plugin/serializers.py:170 msgid "Force a reload of the plugin registry, even if it is already loaded" msgstr "Erzwinge ein erneutes Laden der Plugin-Registrierung, auch wenn sie bereits geladen ist" -#: plugin/serializers.py:172 +#: plugin/serializers.py:177 msgid "Collect plugins" msgstr "Plugins sammeln" -#: plugin/serializers.py:173 +#: plugin/serializers.py:178 msgid "Collect plugins and add them to the registry" msgstr "Plugins sammeln und zur Registrierung hinzufügen" -#: plugin/serializers.py:195 +#: plugin/serializers.py:205 msgid "Activate Plugin" msgstr "Plugin aktivieren" -#: plugin/serializers.py:196 +#: plugin/serializers.py:206 msgid "Activate this plugin" msgstr "Dieses Plugin aktivieren" -#: plugin/serializers.py:219 +#: plugin/serializers.py:234 msgid "Delete configuration" msgstr "Konfiguration löschen" -#: plugin/serializers.py:220 +#: plugin/serializers.py:235 msgid "Delete the plugin configuration from the database" msgstr "Plugin-Konfiguration aus der Datenbank löschen" -#: report/api.py:158 +#: report/api.py:77 msgid "No valid objects provided to template" msgstr "Keine korrekten Objekte für Vorlage gegeben" -#: report/api.py:197 report/api.py:234 +#: report/api.py:89 report/serializers.py:53 +msgid "Model Type" +msgstr "" + +#: report/api.py:92 report/models.py:438 report/serializers.py:98 +#: report/serializers.py:148 templates/js/translated/purchase_order.js:1747 +#: templates/js/translated/return_order.js:353 +#: templates/js/translated/sales_order.js:887 +#: templates/js/translated/sales_order.js:1047 +msgid "Items" +msgstr "Teile" + +#: report/api.py:168 +msgid "Plugin not found" +msgstr "" + +#: report/api.py:170 +msgid "Plugin is not active" +msgstr "" + +#: report/api.py:172 +msgid "Plugin does not support label printing" +msgstr "" + +#: report/api.py:221 +msgid "Invalid label dimensions" +msgstr "" + +#: report/api.py:236 report/api.py:316 +msgid "No valid items provided to template" +msgstr "" + +#: report/api.py:271 +msgid "Error printing label" +msgstr "Fehler beim Drucken des Labels" + +#: report/api.py:362 report/api.py:398 #, python-brace-format msgid "Template file '{template}' is missing or does not exist" msgstr "Vorlagendatei '{template}' fehlt oder existiert nicht" -#: report/api.py:319 -msgid "Test report" -msgstr "Testbericht" - -#: report/helpers.py:15 +#: report/helpers.py:41 msgid "A4" -msgstr "" +msgstr "A4" -#: report/helpers.py:16 +#: report/helpers.py:42 msgid "A3" -msgstr "" +msgstr "A3" -#: report/helpers.py:17 +#: report/helpers.py:43 msgid "Legal" msgstr "US-Legal" -#: report/helpers.py:18 +#: report/helpers.py:44 msgid "Letter" msgstr "US-Letter" -#: report/models.py:177 +#: report/models.py:118 +msgid "Template file with this name already exists" +msgstr "" + +#: report/models.py:150 msgid "Template name" msgstr "Vorlagen Name" -#: report/models.py:183 -msgid "Report template file" -msgstr "Bericht-Vorlage Datei" +#: report/models.py:156 +msgid "Template description" +msgstr "" -#: report/models.py:190 -msgid "Report template description" -msgstr "Bericht-Vorlage Beschreibung" +#: report/models.py:162 +msgid "Revision number (auto-increments)" +msgstr "" -#: report/models.py:196 -msgid "Report revision number (auto-increments)" -msgstr "Bericht Revisionsnummer (autom. erhöht)" +#: report/models.py:202 +msgid "Filename Pattern" +msgstr "Dateinamen-Muster" -#: report/models.py:204 +#: report/models.py:203 +msgid "Pattern for generating filenames" +msgstr "" + +#: report/models.py:208 +msgid "Template is enabled" +msgstr "" + +#: report/models.py:214 +msgid "Target model type for template" +msgstr "" + +#: report/models.py:234 +msgid "Filters" +msgstr "Filter" + +#: report/models.py:235 +msgid "Template query filters (comma-separated list of key=value pairs)" +msgstr "" + +#: report/models.py:294 report/models.py:361 +msgid "Template file" +msgstr "" + +#: report/models.py:302 msgid "Page size for PDF reports" msgstr "Seitengröße für PDF-Berichte" -#: report/models.py:210 +#: report/models.py:308 msgid "Render report in landscape orientation" msgstr "Bericht in Querformat anzeigen" -#: report/models.py:318 -msgid "Pattern for generating report filenames" -msgstr "Muster für die Erstellung von Berichtsdateinamen" +#: report/models.py:367 +msgid "Width [mm]" +msgstr "Breite [mm]" -#: report/models.py:325 -msgid "Report template is enabled" -msgstr "Bericht-Vorlage ist ein" +#: report/models.py:368 +msgid "Label width, specified in mm" +msgstr "Label-Breite in mm" -#: report/models.py:347 -msgid "StockItem query filters (comma-separated list of key=value pairs)" -msgstr "Lagerartikel-Abfragefilter (kommagetrennte Liste mit Schlüssel=Wert-Paaren)" +#: report/models.py:374 +msgid "Height [mm]" +msgstr "Höhe [mm]" -#: report/models.py:354 -msgid "Include Installed Tests" -msgstr "einfügen Installiert in Tests" +#: report/models.py:375 +msgid "Label height, specified in mm" +msgstr "Label-Höhe in mm" -#: report/models.py:356 -msgid "Include test results for stock items installed inside assembled item" -msgstr "Test-Ergebnisse für Lagerartikel in Baugruppen einschließen" - -#: report/models.py:424 -msgid "Build Filters" -msgstr "Bauauftrag Filter" - -#: report/models.py:425 -msgid "Build query filters (comma-separated list of key=value pairs" -msgstr "Bau-Abfragefilter (kommagetrennte Liste mit Schlüssel=Wert-Paaren)" - -#: report/models.py:464 -msgid "Part Filters" -msgstr "Teil Filter" - -#: report/models.py:465 -msgid "Part query filters (comma-separated list of key=value pairs" -msgstr "Teile-Abfragefilter (kommagetrennte Liste mit Schlüssel=Wert-Paaren)" - -#: report/models.py:497 -msgid "Purchase order query filters" -msgstr "Bestellungs-Abfragefilter" - -#: report/models.py:533 -msgid "Sales order query filters" -msgstr "Auftrags-Abfragefilter" - -#: report/models.py:569 -msgid "Return order query filters" -msgstr "Rückgabe von Auftragsabfragefiltern" - -#: report/models.py:641 -msgid "Snippet file with this name already exists" -msgstr "Snippet-Datei mit diesem Namen existiert bereits" - -#: report/models.py:648 -msgid "Snippet" +#: report/models.py:438 +msgid "Number of items to process" msgstr "" -#: report/models.py:649 +#: report/models.py:444 +msgid "Report generation is complete" +msgstr "" + +#: report/models.py:448 templates/js/translated/build.js:2177 +msgid "Progress" +msgstr "Fortschritt" + +#: report/models.py:448 +msgid "Report generation progress" +msgstr "" + +#: report/models.py:456 +msgid "Report Template" +msgstr "" + +#: report/models.py:463 report/models.py:486 +msgid "Output File" +msgstr "" + +#: report/models.py:464 report/models.py:487 +msgid "Generated output file" +msgstr "" + +#: report/models.py:475 +msgid "Label output plugin" +msgstr "" + +#: report/models.py:479 +msgid "Label Template" +msgstr "" + +#: report/models.py:502 +msgid "Snippet" +msgstr "Schnipsel" + +#: report/models.py:503 msgid "Report snippet file" msgstr "Berichts-Snippet" -#: report/models.py:656 +#: report/models.py:510 msgid "Snippet file description" msgstr "Snippet-Beschreibung" -#: report/models.py:714 -msgid "Asset file with this name already exists" -msgstr "Eine Datei mit diesem Namen existiert bereits" - -#: report/models.py:722 +#: report/models.py:528 msgid "Asset" msgstr "Ressource" -#: report/models.py:723 +#: report/models.py:529 msgid "Report asset file" msgstr "Berichts-Ressource" -#: report/models.py:730 +#: report/models.py:536 msgid "Asset file description" msgstr "Ressource-Beschreibung" -#: report/models.py:752 -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)" +#: report/serializers.py:91 +msgid "Select report template" +msgstr "" + +#: report/serializers.py:99 report/serializers.py:149 +msgid "List of item primary keys to include in the report" +msgstr "" + +#: report/serializers.py:132 +msgid "Select label template" +msgstr "Etiketten-Vorlage auswählen" + +#: report/serializers.py:140 +msgid "Printing Plugin" +msgstr "" + +#: report/serializers.py:141 +msgid "Select plugin to use for label printing" +msgstr "" + +#: report/templates/label/part_label.html:31 +#: report/templates/label/stockitem_qr.html:21 +#: report/templates/label/stocklocation_qr.html:20 +#: templates/allauth_2fa/setup.html:18 +msgid "QR Code" +msgstr "QR-Code" + +#: report/templates/label/part_label_code128.html:31 +#: report/templates/label/stocklocation_qr_and_text.html:31 +#: templates/qr_code.html:7 +msgid "QR code" +msgstr "QR-Code" #: report/templates/report/inventree_bill_of_materials_report.html:133 msgid "Materials needed" msgstr "Benötigte Materialien" -#: report/templates/report/inventree_build_order_base.html:146 +#: report/templates/report/inventree_build_order_report.html:146 msgid "Required For" msgstr "benötigt für" -#: report/templates/report/inventree_po_report_base.html:15 +#: report/templates/report/inventree_purchase_order_report.html:15 msgid "Supplier was deleted" msgstr "Lieferant gelöscht" -#: report/templates/report/inventree_po_report_base.html:30 -#: report/templates/report/inventree_so_report_base.html:30 +#: report/templates/report/inventree_purchase_order_report.html:30 +#: report/templates/report/inventree_sales_order_report.html:30 #: templates/js/translated/order.js:316 templates/js/translated/pricing.js:527 #: templates/js/translated/pricing.js:596 #: templates/js/translated/pricing.js:834 -#: templates/js/translated/purchase_order.js:2116 -#: templates/js/translated/sales_order.js:1837 +#: templates/js/translated/purchase_order.js:2115 +#: templates/js/translated/sales_order.js:1873 msgid "Unit Price" msgstr "Stück-Preis" -#: 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 +#: report/templates/report/inventree_purchase_order_report.html:55 +#: report/templates/report/inventree_return_order_report.html:48 +#: report/templates/report/inventree_sales_order_report.html:55 msgid "Extra Line Items" msgstr "Zusätzliche Positionen" -#: 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 +#: report/templates/report/inventree_purchase_order_report.html:72 +#: report/templates/report/inventree_sales_order_report.html:72 +#: templates/js/translated/purchase_order.js:2017 +#: templates/js/translated/sales_order.js:1842 msgid "Total" msgstr "Summe" -#: report/templates/report/inventree_return_order_report_base.html:25 -#: report/templates/report/inventree_test_report_base.html:88 -#: stock/models.py:809 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 +#: report/templates/report/inventree_return_order_report.html:25 +#: report/templates/report/inventree_test_report.html:88 stock/models.py:826 +#: stock/serializers.py:150 stock/templates/stock/item_base.html:311 +#: templates/js/translated/build.js:519 templates/js/translated/build.js:1367 +#: templates/js/translated/build.js:2355 +#: templates/js/translated/model_renderers.js:230 +#: templates/js/translated/return_order.js:539 +#: templates/js/translated/return_order.js:723 #: templates/js/translated/sales_order.js:315 -#: templates/js/translated/sales_order.js:1611 -#: templates/js/translated/sales_order.js:1696 +#: templates/js/translated/sales_order.js:1647 +#: templates/js/translated/sales_order.js:1732 #: templates/js/translated/stock.js:596 msgid "Serial Number" msgstr "Seriennummer" -#: report/templates/report/inventree_slr_report.html:97 +#: report/templates/report/inventree_stock_location_report.html:97 msgid "Stock location items" msgstr "Lagerstandorte" -#: report/templates/report/inventree_test_report_base.html:21 +#: report/templates/report/inventree_test_report.html:21 msgid "Stock Item Test Report" msgstr "Lagerartikel Test-Bericht" -#: report/templates/report/inventree_test_report_base.html:97 +#: report/templates/report/inventree_test_report.html:97 msgid "Test Results" msgstr "Testergebnisse" -#: report/templates/report/inventree_test_report_base.html:102 -#: templates/js/translated/stock.js:1492 +#: report/templates/report/inventree_test_report.html:102 +#: templates/js/translated/stock.js:1495 msgid "Test" -msgstr "" +msgstr "Test" -#: report/templates/report/inventree_test_report_base.html:103 -#: stock/models.py:2430 +#: report/templates/report/inventree_test_report.html:103 stock/models.py:2423 msgid "Result" msgstr "Ergebnis" -#: report/templates/report/inventree_test_report_base.html:130 +#: report/templates/report/inventree_test_report.html:130 msgid "Pass" msgstr "bestanden" -#: report/templates/report/inventree_test_report_base.html:132 +#: report/templates/report/inventree_test_report.html:132 msgid "Fail" msgstr "fehlgeschlagen" -#: report/templates/report/inventree_test_report_base.html:139 +#: report/templates/report/inventree_test_report.html:139 msgid "No result (required)" msgstr "Kein Ergebnis (erforderlich)" -#: report/templates/report/inventree_test_report_base.html:141 +#: report/templates/report/inventree_test_report.html:141 msgid "No result" msgstr "Kein Ergebnis" -#: report/templates/report/inventree_test_report_base.html:154 +#: report/templates/report/inventree_test_report.html:154 #: stock/templates/stock/stock_sidebar.html:16 msgid "Installed Items" 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:3110 +#: report/templates/report/inventree_test_report.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 "Seriennummer" @@ -8724,7 +8687,7 @@ msgstr "Lieferant" msgid "Customer ID" msgstr "Kunden ID" -#: stock/admin.py:201 stock/models.py:789 +#: stock/admin.py:201 stock/models.py:806 #: stock/templates/stock/item_base.html:354 msgid "Installed In" msgstr "verbaut in" @@ -8749,555 +8712,723 @@ msgstr "Überprüfung erforderlich" msgid "Delete on Deplete" msgstr "Löschen wenn leer" -#: stock/admin.py:256 stock/models.py:883 +#: stock/admin.py:256 stock/models.py:900 #: stock/templates/stock/item_base.html:433 -#: templates/js/translated/stock.js:2229 users/models.py:124 +#: templates/js/translated/stock.js:2230 users/models.py:124 msgid "Expiry Date" msgstr "Ablaufdatum" -#: stock/api.py:284 +#: stock/api.py:318 msgid "Filter by location depth" msgstr "Filtern nach Standorttiefe" -#: stock/api.py:304 +#: stock/api.py:338 msgid "Include sub-locations in filtered results" msgstr "Unterorte in gefilterte Ergebnisse einbeziehen" -#: stock/api.py:325 +#: stock/api.py:359 msgid "Parent Location" msgstr "Übergeordneter Ort" -#: stock/api.py:326 +#: stock/api.py:360 msgid "Filter by parent location" msgstr "Filtern nach übergeordnetem Ort" -#: stock/api.py:579 templates/js/translated/table_filters.js:427 +#: stock/api.py:615 templates/js/translated/table_filters.js:427 msgid "External Location" msgstr "Externer Standort" -#: stock/api.py:767 +#: stock/api.py:803 msgid "Part Tree" msgstr "Teile-Baum" -#: stock/api.py:797 +#: stock/api.py:833 msgid "Expiry date before" msgstr "Gültigkeitsdauer vor" -#: stock/api.py:801 +#: stock/api.py:837 msgid "Expiry date after" msgstr "Gültigkeitsdauer nach" -#: stock/api.py:804 stock/templates/stock/item_base.html:439 +#: stock/api.py:840 stock/templates/stock/item_base.html:439 #: templates/js/translated/table_filters.js:441 msgid "Stale" msgstr "überfällig" -#: stock/api.py:891 +#: stock/api.py:927 msgid "Quantity is required" msgstr "Menge ist erforderlich" -#: stock/api.py:897 +#: stock/api.py:933 msgid "Valid part must be supplied" msgstr "Gültiges Teil muss angegeben werden" -#: stock/api.py:928 +#: stock/api.py:964 msgid "The given supplier part does not exist" msgstr "Der angegebene Lieferantenartikel existiert nicht" -#: stock/api.py:938 +#: stock/api.py:974 msgid "The supplier part has a pack size defined, but flag use_pack_size not set" msgstr "Das Zulieferteil hat eine Packungsgröße definiert, aber das Kennzeichen use_pack_size ist nicht gesetzt" -#: stock/api.py:969 +#: stock/api.py:1005 msgid "Serial numbers cannot be supplied for a non-trackable part" msgstr "Seriennummern können für nicht verfolgbare Teile nicht angegeben werden" -#: stock/models.py:63 +#: stock/models.py:59 msgid "Stock Location type" msgstr "Lagerstandort Typ" -#: stock/models.py:64 +#: stock/models.py:60 msgid "Stock Location types" msgstr "Lagerstandorte Typen" -#: stock/models.py:90 +#: stock/models.py:86 msgid "Default icon for all locations that have no icon set (optional)" msgstr "Standardsymbol für alle Orte, die kein Icon gesetzt haben (optional)" -#: stock/models.py:125 stock/models.py:771 +#: stock/models.py:123 stock/models.py:788 #: stock/templates/stock/location.html:17 #: stock/templates/stock/stock_app_base.html:8 msgid "Stock Location" msgstr "Bestand-Lagerort" -#: stock/models.py:126 stock/templates/stock/location.html:179 +#: stock/models.py:124 stock/templates/stock/location.html:186 #: templates/InvenTree/search.html:166 templates/js/translated/search.js:178 #: users/models.py:205 msgid "Stock Locations" msgstr "Bestand-Lagerorte" -#: stock/models.py:158 stock/models.py:932 +#: stock/models.py:166 stock/models.py:949 #: stock/templates/stock/item_base.html:247 msgid "Owner" msgstr "Besitzer" -#: stock/models.py:159 stock/models.py:933 +#: stock/models.py:167 stock/models.py:950 msgid "Select Owner" msgstr "Besitzer auswählen" -#: stock/models.py:167 +#: stock/models.py:175 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:2781 +#: stock/models.py:182 templates/js/translated/stock.js:2781 #: templates/js/translated/table_filters.js:243 msgid "External" msgstr "Extern" -#: stock/models.py:175 +#: stock/models.py:183 msgid "This is an external stock location" msgstr "Dies ist ein externer Lagerort" -#: stock/models.py:181 templates/js/translated/stock.js:2790 +#: stock/models.py:189 templates/js/translated/stock.js:2790 #: templates/js/translated/table_filters.js:246 msgid "Location type" msgstr "Standorttyp" -#: stock/models.py:185 +#: stock/models.py:193 msgid "Stock location type of this location" msgstr "Standortart dieses Standortes" -#: stock/models.py:254 +#: stock/models.py:262 msgid "You cannot make this stock location structural because some stock items are already located into it!" msgstr "Sie können diesen Lagerort nicht als strukturell markieren, da sich bereits Lagerartikel darin befinden!" -#: stock/models.py:626 +#: stock/models.py:643 msgid "Stock items cannot be located into structural stock locations!" msgstr "Lagerartikel können nicht in strukturelle Lagerorte abgelegt werden!" -#: stock/models.py:653 stock/serializers.py:290 +#: stock/models.py:670 stock/serializers.py:419 msgid "Stock item cannot be created for virtual parts" msgstr "Für virtuelle Teile können keine Lagerartikel erstellt werden" -#: stock/models.py:670 +#: stock/models.py:687 #, python-brace-format msgid "Part type ('{self.supplier_part.part}') must be {self.part}" msgstr "Artikeltyp ('{self.supplier_part.part}') muss {self.part} sein" -#: stock/models.py:680 stock/models.py:693 +#: stock/models.py:697 stock/models.py:710 msgid "Quantity must be 1 for item with a serial number" msgstr "Anzahl muss für Objekte mit Seriennummer 1 sein" -#: stock/models.py:683 +#: stock/models.py:700 msgid "Serial number cannot be set if quantity greater than 1" msgstr "Seriennummer kann nicht gesetzt werden wenn die Anzahl größer als 1 ist" -#: stock/models.py:707 +#: stock/models.py:724 msgid "Item cannot belong to itself" msgstr "Teil kann nicht zu sich selbst gehören" -#: stock/models.py:712 +#: stock/models.py:729 msgid "Item must have a build reference if is_building=True" msgstr "Teil muss eine Referenz haben wenn is_building wahr ist" -#: stock/models.py:725 +#: stock/models.py:742 msgid "Build reference does not point to the same part object" msgstr "Referenz verweist nicht auf das gleiche Teil" -#: stock/models.py:741 +#: stock/models.py:758 msgid "Parent Stock Item" msgstr "Eltern-Lagerartikel" -#: stock/models.py:753 +#: stock/models.py:770 msgid "Base part" msgstr "Basis-Teil" -#: stock/models.py:763 +#: stock/models.py:780 msgid "Select a matching supplier part for this stock item" msgstr "Passendes Zuliefererteil für diesen Lagerartikel auswählen" -#: stock/models.py:775 +#: stock/models.py:792 msgid "Where is this stock item located?" msgstr "Wo wird dieses Teil normalerweise gelagert?" -#: stock/models.py:783 stock/serializers.py:1351 +#: stock/models.py:800 stock/serializers.py:1480 msgid "Packaging this stock item is stored in" msgstr "Verpackung, in der dieser Lagerartikel gelagert ist" -#: stock/models.py:794 +#: stock/models.py:811 msgid "Is this item installed in another item?" msgstr "Ist dieses Teil in einem anderen verbaut?" -#: stock/models.py:813 +#: stock/models.py:830 msgid "Serial number for this item" msgstr "Seriennummer für dieses Teil" -#: stock/models.py:827 stock/serializers.py:1334 +#: stock/models.py:844 stock/serializers.py:1463 msgid "Batch code for this stock item" msgstr "Losnummer für diesen Lagerartikel" -#: stock/models.py:832 +#: stock/models.py:849 msgid "Stock Quantity" msgstr "Bestand" -#: stock/models.py:842 +#: stock/models.py:859 msgid "Source Build" msgstr "Quellbau" -#: stock/models.py:845 +#: stock/models.py:862 msgid "Build for this stock item" msgstr "Bauauftrag für diesen Lagerartikel" -#: stock/models.py:852 stock/templates/stock/item_base.html:363 +#: stock/models.py:869 stock/templates/stock/item_base.html:363 msgid "Consumed By" msgstr "Verbraucht von" -#: stock/models.py:855 +#: stock/models.py:872 msgid "Build order which consumed this stock item" msgstr "Bauauftrag der diesen Lagerartikel verbrauchte" -#: stock/models.py:864 +#: stock/models.py:881 msgid "Source Purchase Order" msgstr "Quelle Bestellung" -#: stock/models.py:868 +#: stock/models.py:885 msgid "Purchase order for this stock item" msgstr "Bestellung für diesen Lagerartikel" -#: stock/models.py:874 +#: stock/models.py:891 msgid "Destination Sales Order" msgstr "Ziel-Auftrag" -#: stock/models.py:885 +#: stock/models.py:902 msgid "Expiry date for stock item. Stock will be considered expired after this date" msgstr "Ablaufdatum für Lagerartikel. Bestand wird danach als abgelaufen gekennzeichnet" -#: stock/models.py:903 +#: stock/models.py:920 msgid "Delete on deplete" msgstr "Löschen wenn leer" -#: stock/models.py:904 +#: stock/models.py:921 msgid "Delete this Stock Item when stock is depleted" msgstr "Diesen Lagerartikel löschen wenn der Bestand aufgebraucht ist" -#: stock/models.py:924 +#: stock/models.py:941 msgid "Single unit purchase price at time of purchase" msgstr "Preis für eine Einheit bei Einkauf" -#: stock/models.py:955 +#: stock/models.py:972 msgid "Converted to part" msgstr "In Teil umgewandelt" -#: stock/models.py:1465 +#: stock/models.py:1490 msgid "Part is not set as trackable" msgstr "Teil ist nicht verfolgbar" -#: stock/models.py:1471 +#: stock/models.py:1496 msgid "Quantity must be integer" msgstr "Anzahl muss eine Ganzzahl sein" -#: stock/models.py:1479 +#: stock/models.py:1504 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({self.quantity})" msgstr "Menge darf die verfügbare Lagermenge ({self.quantity}) nicht überschreiten" -#: stock/models.py:1485 +#: stock/models.py:1510 msgid "Serial numbers must be a list of integers" msgstr "Seriennummern muss eine Liste von Ganzzahlen sein" -#: stock/models.py:1490 +#: stock/models.py:1515 msgid "Quantity does not match serial numbers" msgstr "Anzahl stimmt nicht mit den Seriennummern überein" -#: stock/models.py:1498 stock/serializers.py:529 +#: stock/models.py:1523 stock/serializers.py:658 msgid "Serial numbers already exist" msgstr "Seriennummern existieren bereits" -#: stock/models.py:1595 +#: stock/models.py:1620 msgid "Test template does not exist" msgstr "Testvorlage existiert nicht" -#: stock/models.py:1613 +#: stock/models.py:1638 msgid "Stock item has been assigned to a sales order" msgstr "Artikel wurde einem Kundenauftrag zugewiesen" -#: stock/models.py:1617 +#: stock/models.py:1642 msgid "Stock item is installed in another item" msgstr "Lagerartikel ist in anderem Element verbaut" -#: stock/models.py:1620 +#: stock/models.py:1645 msgid "Stock item contains other items" msgstr "Lagerartikel enthält andere Artikel" -#: stock/models.py:1623 +#: stock/models.py:1648 msgid "Stock item has been assigned to a customer" msgstr "Artikel wurde einem Kunden zugewiesen" -#: stock/models.py:1626 +#: stock/models.py:1651 msgid "Stock item is currently in production" msgstr "Lagerartikel wird aktuell produziert" -#: stock/models.py:1629 +#: stock/models.py:1654 msgid "Serialized stock cannot be merged" msgstr "Nachverfolgbare Lagerartikel können nicht zusammengeführt werden" -#: stock/models.py:1636 stock/serializers.py:1240 +#: stock/models.py:1661 stock/serializers.py:1369 msgid "Duplicate stock items" msgstr "Artikel duplizeren" -#: stock/models.py:1640 +#: stock/models.py:1665 msgid "Stock items must refer to the same part" msgstr "Lagerartikel müssen auf dasselbe Teil verweisen" -#: stock/models.py:1648 +#: stock/models.py:1673 msgid "Stock items must refer to the same supplier part" msgstr "Lagerartikel müssen auf dasselbe Lieferantenteil verweisen" -#: stock/models.py:1653 +#: stock/models.py:1678 msgid "Stock status codes must match" msgstr "Status-Codes müssen zusammenpassen" -#: stock/models.py:1870 +#: stock/models.py:1905 msgid "StockItem cannot be moved as it is not in stock" msgstr "Lagerartikel kann nicht bewegt werden, da kein Bestand vorhanden ist" -#: stock/models.py:2333 +#: stock/models.py:2326 msgid "Entry notes" msgstr "Eintrags-Notizen" -#: stock/models.py:2398 +#: stock/models.py:2391 msgid "Value must be provided for this test" msgstr "Wert muss für diesen Test angegeben werden" -#: stock/models.py:2403 +#: stock/models.py:2396 msgid "Attachment must be uploaded for this test" msgstr "Anhang muss für diesen Test hochgeladen werden" -#: stock/models.py:2430 +#: stock/models.py:2423 msgid "Test result" msgstr "Testergebnis" -#: stock/models.py:2437 +#: stock/models.py:2430 msgid "Test output value" msgstr "Test Ausgabe Wert" -#: stock/models.py:2445 +#: stock/models.py:2438 msgid "Test result attachment" msgstr "Test Ergebnis Anhang" -#: stock/models.py:2449 +#: stock/models.py:2442 msgid "Test notes" msgstr "Test Notizen" -#: stock/models.py:2457 templates/js/translated/stock.js:1545 +#: stock/models.py:2450 templates/js/translated/stock.js:1548 msgid "Test station" msgstr "Teststation" -#: stock/models.py:2458 +#: stock/models.py:2451 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:2464 +#: stock/models.py:2457 msgid "Started" msgstr "Gestartet" -#: stock/models.py:2465 +#: stock/models.py:2458 msgid "The timestamp of the test start" msgstr "Der Zeitstempel des Teststarts" -#: stock/models.py:2471 +#: stock/models.py:2464 msgid "Finished" msgstr "Fertiggestellt" -#: stock/models.py:2472 +#: stock/models.py:2465 msgid "The timestamp of the test finish" msgstr "Der Zeitstempel der Test-Beendigung" -#: stock/serializers.py:100 +#: stock/serializers.py:75 +msgid "Generated batch code" +msgstr "" + +#: stock/serializers.py:84 +msgid "Select build order" +msgstr "" + +#: stock/serializers.py:93 +msgid "Select stock item to generate batch code for" +msgstr "" + +#: stock/serializers.py:102 +msgid "Select location to generate batch code for" +msgstr "" + +#: stock/serializers.py:111 +msgid "Select part to generate batch code for" +msgstr "" + +#: stock/serializers.py:120 +msgid "Select purchase order" +msgstr "" + +#: stock/serializers.py:127 +msgid "Enter quantity for batch code" +msgstr "" + +#: stock/serializers.py:150 +msgid "Generated serial number" +msgstr "" + +#: stock/serializers.py:159 +msgid "Select part to generate serial number for" +msgstr "" + +#: stock/serializers.py:167 +msgid "Quantity of serial numbers to generate" +msgstr "" + +#: stock/serializers.py:229 msgid "Test template for this result" msgstr "Testvorlage für dieses Ergebnis" -#: stock/serializers.py:119 +#: stock/serializers.py:248 msgid "Template ID or test name must be provided" msgstr "Vorlagen-ID oder Testname muss angegeben werden" -#: stock/serializers.py:151 +#: stock/serializers.py:280 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 +#: stock/serializers.py:313 msgid "Serial number is too large" msgstr "Seriennummer ist zu lang" -#: stock/serializers.py:282 +#: stock/serializers.py:411 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:402 +#: stock/serializers.py:531 msgid "Purchase price of this stock item, per unit or pack" msgstr "Einkaufspreis dieses Lagerartikels, pro Einheit oder Verpackungseinheit" -#: stock/serializers.py:464 +#: stock/serializers.py:593 msgid "Enter number of stock items to serialize" msgstr "Anzahl der zu serialisierenden Lagerartikel eingeben" -#: stock/serializers.py:477 +#: stock/serializers.py:606 #, 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:484 +#: stock/serializers.py:613 msgid "Enter serial numbers for new items" msgstr "Seriennummern für neue Teile eingeben" -#: stock/serializers.py:495 stock/serializers.py:1197 stock/serializers.py:1453 +#: stock/serializers.py:624 stock/serializers.py:1326 stock/serializers.py:1582 msgid "Destination stock location" msgstr "Ziel-Bestand" -#: stock/serializers.py:502 +#: stock/serializers.py:631 msgid "Optional note field" msgstr "Optionales Notizfeld" -#: stock/serializers.py:512 +#: stock/serializers.py:641 msgid "Serial numbers cannot be assigned to this part" msgstr "Seriennummern können diesem Teil nicht zugewiesen werden" -#: stock/serializers.py:567 +#: stock/serializers.py:696 msgid "Select stock item to install" msgstr "Lagerartikel für Installation auswählen" -#: stock/serializers.py:574 +#: stock/serializers.py:703 msgid "Quantity to Install" msgstr "Zu installierende Menge" -#: stock/serializers.py:575 +#: stock/serializers.py:704 msgid "Enter the quantity of items to install" msgstr "Anzahl der zu verwendenden Artikel eingeben" -#: stock/serializers.py:580 stock/serializers.py:660 stock/serializers.py:756 -#: stock/serializers.py:806 +#: stock/serializers.py:709 stock/serializers.py:789 stock/serializers.py:885 +#: stock/serializers.py:935 msgid "Add transaction note (optional)" msgstr " Transaktionsnotizen hinzufügen (optional)" -#: stock/serializers.py:588 +#: stock/serializers.py:717 msgid "Quantity to install must be at least 1" msgstr "Die zu verwendende Menge muss mindestens 1 sein" -#: stock/serializers.py:596 +#: stock/serializers.py:725 msgid "Stock item is unavailable" msgstr "Lagerartikel ist nicht verfügbar" -#: stock/serializers.py:607 +#: stock/serializers.py:736 msgid "Selected part is not in the Bill of Materials" msgstr "Ausgewähltes Teil ist nicht in der Stückliste" -#: stock/serializers.py:620 +#: stock/serializers.py:749 msgid "Quantity to install must not exceed available quantity" msgstr "Die zu verwendende Menge darf die verfügbare Menge nicht überschreiten" -#: stock/serializers.py:655 +#: stock/serializers.py:784 msgid "Destination location for uninstalled item" msgstr "Ziel Lagerort für unverbautes Objekt" -#: stock/serializers.py:690 +#: stock/serializers.py:819 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:703 +#: stock/serializers.py:832 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:720 +#: stock/serializers.py:849 msgid "Cannot convert stock item with assigned SupplierPart" msgstr "Lagerartikel konnte nicht mit Zulieferteil zugewiesen werden" -#: stock/serializers.py:751 +#: stock/serializers.py:880 msgid "Destination location for returned item" msgstr "Ziel Lagerort für zurückgegebene Artikel" -#: stock/serializers.py:788 +#: stock/serializers.py:917 msgid "Select stock items to change status" msgstr "Lagerartikel auswählen, um den Status zu ändern" -#: stock/serializers.py:794 +#: stock/serializers.py:923 msgid "No stock items selected" msgstr "Keine Lagerartikel ausgewählt" -#: stock/serializers.py:890 stock/serializers.py:953 +#: stock/serializers.py:1019 stock/serializers.py:1082 #: stock/templates/stock/location.html:165 -#: stock/templates/stock/location.html:213 +#: stock/templates/stock/location.html:220 #: stock/templates/stock/location_sidebar.html:5 msgid "Sublocations" msgstr "Unter-Lagerorte" -#: stock/serializers.py:1069 +#: stock/serializers.py:1198 msgid "Part must be salable" msgstr "Teil muss verkaufbar sein" -#: stock/serializers.py:1073 +#: stock/serializers.py:1202 msgid "Item is allocated to a sales order" msgstr "Artikel ist einem Kundenauftrag zugeordnet" -#: stock/serializers.py:1077 +#: stock/serializers.py:1206 msgid "Item is allocated to a build order" msgstr "Artikel ist einem Fertigungsauftrag zugeordnet" -#: stock/serializers.py:1101 +#: stock/serializers.py:1230 msgid "Customer to assign stock items" msgstr "Kunde zum Zuweisen von Lagerartikel" -#: stock/serializers.py:1107 +#: stock/serializers.py:1236 msgid "Selected company is not a customer" msgstr "Ausgewählte Firma ist kein Kunde" -#: stock/serializers.py:1115 +#: stock/serializers.py:1244 msgid "Stock assignment notes" msgstr "Notizen zur Lagerzuordnung" -#: stock/serializers.py:1125 stock/serializers.py:1379 +#: stock/serializers.py:1254 stock/serializers.py:1508 msgid "A list of stock items must be provided" msgstr "Eine Liste der Lagerbestände muss angegeben werden" -#: stock/serializers.py:1204 +#: stock/serializers.py:1333 msgid "Stock merging notes" msgstr "Notizen zur Lagerartikelzusammenführung" -#: stock/serializers.py:1209 +#: stock/serializers.py:1338 msgid "Allow mismatched suppliers" msgstr "Unterschiedliche Lieferanten erlauben" -#: stock/serializers.py:1210 +#: stock/serializers.py:1339 msgid "Allow stock items with different supplier parts to be merged" msgstr "Zusammenführen von Lagerartikeln mit unterschiedlichen Lieferanten erlauben" -#: stock/serializers.py:1215 +#: stock/serializers.py:1344 msgid "Allow mismatched status" msgstr "Unterschiedliche Status erlauben" -#: stock/serializers.py:1216 +#: stock/serializers.py:1345 msgid "Allow stock items with different status codes to be merged" msgstr "Zusammenführen von Lagerartikeln mit unterschiedlichen Status-Codes erlauben" -#: stock/serializers.py:1226 +#: stock/serializers.py:1355 msgid "At least two stock items must be provided" msgstr "Mindestens zwei Lagerartikel müssen angegeben werden" -#: stock/serializers.py:1293 +#: stock/serializers.py:1422 msgid "No Change" msgstr "Keine Änderung" -#: stock/serializers.py:1322 +#: stock/serializers.py:1451 msgid "StockItem primary key value" msgstr "Primärschlüssel Lagerelement" -#: stock/serializers.py:1341 +#: stock/serializers.py:1470 msgid "Stock item status code" msgstr "Lagerartikel Status-Code" -#: stock/serializers.py:1369 +#: stock/serializers.py:1498 msgid "Stock transaction notes" msgstr "Bestandsbewegungsnotizen" +#: stock/status_codes.py:11 +msgid "OK" +msgstr "OK" + +#: stock/status_codes.py:12 +msgid "Attention needed" +msgstr "erfordert Eingriff" + +#: stock/status_codes.py:13 +msgid "Damaged" +msgstr "Beschädigt" + +#: stock/status_codes.py:14 +msgid "Destroyed" +msgstr "Zerstört" + +#: stock/status_codes.py:15 +msgid "Rejected" +msgstr "Zurückgewiesen" + +#: stock/status_codes.py:19 +msgid "Quarantined" +msgstr "In Quarantäne" + +#: stock/status_codes.py:40 +msgid "Legacy stock tracking entry" +msgstr "Alter Bestand-Verfolgungs-Eintrag" + +#: stock/status_codes.py:42 templates/js/translated/stock.js:544 +msgid "Stock item created" +msgstr "Lagerartikel erstellt" + +#: stock/status_codes.py:45 +msgid "Edited stock item" +msgstr "Lagerartikel bearbeitet" + +#: stock/status_codes.py:46 +msgid "Assigned serial number" +msgstr "Seriennummer hinzugefügt" + +#: stock/status_codes.py:49 +msgid "Stock counted" +msgstr "Bestand gezählt" + +#: stock/status_codes.py:50 +msgid "Stock manually added" +msgstr "Bestand manuell hinzugefügt" + +#: stock/status_codes.py:51 +msgid "Stock manually removed" +msgstr "Bestand manuell entfernt" + +#: stock/status_codes.py:54 +msgid "Location changed" +msgstr "Standort geändert" + +#: stock/status_codes.py:55 +msgid "Stock updated" +msgstr "Lagerbestand aktualisiert" + +#: stock/status_codes.py:58 +msgid "Installed into assembly" +msgstr "In Baugruppe installiert" + +#: stock/status_codes.py:59 +msgid "Removed from assembly" +msgstr "Aus Baugruppe entfernt" + +#: stock/status_codes.py:61 +msgid "Installed component item" +msgstr "Komponente installiert" + +#: stock/status_codes.py:62 +msgid "Removed component item" +msgstr "Komponente entfernt" + +#: stock/status_codes.py:65 +msgid "Split from parent item" +msgstr "Vom übergeordneten Element geteilt" + +#: stock/status_codes.py:66 +msgid "Split child item" +msgstr "Unterobjekt geteilt" + +#: stock/status_codes.py:69 templates/js/translated/stock.js:1858 +msgid "Merged stock items" +msgstr "Lagerartikel zusammengeführt" + +#: stock/status_codes.py:72 +msgid "Converted to variant" +msgstr "In Variante umgewandelt" + +#: stock/status_codes.py:75 +msgid "Build order output created" +msgstr "Endprodukt erstellt" + +#: stock/status_codes.py:76 +msgid "Build order output completed" +msgstr "Endprodukt fertiggestellt" + +#: stock/status_codes.py:77 +msgid "Build order output rejected" +msgstr "Endprodukt abgelehnt" + +#: stock/status_codes.py:78 templates/js/translated/stock.js:1764 +msgid "Consumed by build order" +msgstr "Durch Bauauftrag verbraucht" + +#: stock/status_codes.py:81 +msgid "Shipped against Sales Order" +msgstr "Versandt gegen Verkaufsauftrag" + +#: stock/status_codes.py:84 +msgid "Received against Purchase Order" +msgstr "Gegen Bestellung empfangen" + +#: stock/status_codes.py:87 +msgid "Returned against Return Order" +msgstr "Zurückgeschickt gegen Rücksendeauftrag" + +#: stock/status_codes.py:90 templates/js/translated/table_filters.js:375 +msgid "Sent to customer" +msgstr "Zum Kunden geschickt" + +#: stock/status_codes.py:91 +msgid "Returned from customer" +msgstr "Rücksendung vom Kunden" + #: stock/templates/stock/item.html:17 msgid "Stock Tracking Information" msgstr "Informationen zur Bestand-Verfolgung" @@ -9319,7 +9450,7 @@ msgstr "Testdaten" msgid "Test Report" msgstr "Test-Bericht" -#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:286 +#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:284 msgid "Delete Test Data" msgstr "Testdaten löschen" @@ -9339,11 +9470,11 @@ msgstr "Installierte Lagerartikel" msgid "Install Stock Item" msgstr "Lagerartikel installieren" -#: stock/templates/stock/item.html:274 +#: stock/templates/stock/item.html:272 msgid "Delete all test results for this stock item" msgstr "Alle Testergebnisse für diesen Lagerartikel löschen" -#: stock/templates/stock/item.html:304 templates/js/translated/stock.js:1698 +#: stock/templates/stock/item.html:302 templates/js/translated/stock.js:1701 msgid "Add Test Result" msgstr "Testergebnis hinzufügen" @@ -9366,17 +9497,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:1821 +#: stock/templates/stock/location.html:90 templates/js/translated/stock.js:1824 msgid "Count stock" msgstr "Bestand zählen" #: stock/templates/stock/item_base.html:81 -#: templates/js/translated/stock.js:1803 +#: templates/js/translated/stock.js:1806 msgid "Add stock" msgstr "Bestand hinzufügen" #: stock/templates/stock/item_base.html:82 -#: templates/js/translated/stock.js:1812 +#: templates/js/translated/stock.js:1815 msgid "Remove stock" msgstr "Bestand entfernen" @@ -9385,12 +9516,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:1830 +#: stock/templates/stock/location.html:96 templates/js/translated/stock.js:1833 msgid "Transfer stock" msgstr "Bestand verschieben" #: stock/templates/stock/item_base.html:91 -#: templates/js/translated/stock.js:1884 +#: templates/js/translated/stock.js:1887 msgid "Assign to customer" msgstr "Kunden zuweisen" @@ -9431,7 +9562,7 @@ msgid "Delete stock item" msgstr "Lagerartikel löschen" #: stock/templates/stock/item_base.html:169 templates/InvenTree/search.html:139 -#: templates/js/translated/build.js:2121 templates/navbar.html:38 +#: templates/js/translated/build.js:2123 templates/navbar.html:38 msgid "Build" msgstr "Bauauftrag" @@ -9497,13 +9628,13 @@ msgid "Available Quantity" msgstr "Verfügbare Menge" #: stock/templates/stock/item_base.html:398 -#: templates/js/translated/build.js:2378 +#: templates/js/translated/build.js:2380 msgid "No location set" msgstr "Kein Lagerort gesetzt" #: stock/templates/stock/item_base.html:413 msgid "Tests" -msgstr "" +msgstr "Tests" #: stock/templates/stock/item_base.html:419 msgid "This stock item has not passed all required tests" @@ -9528,40 +9659,40 @@ msgstr "Dieser Lagerartikel läuft am %(item.expiry_date)s ab" msgid "No stocktake performed" msgstr "Keine Inventur ausgeführt" -#: stock/templates/stock/item_base.html:507 -#: templates/js/translated/stock.js:1951 +#: stock/templates/stock/item_base.html:504 +#: templates/js/translated/stock.js:1952 msgid "stock item" msgstr "Lagerartikel" -#: stock/templates/stock/item_base.html:532 +#: stock/templates/stock/item_base.html:527 msgid "Edit Stock Status" msgstr "Lagerstatus bearbeiten" -#: stock/templates/stock/item_base.html:541 +#: stock/templates/stock/item_base.html:536 msgid "Stock Item QR Code" msgstr "Lagerartikel QR-Code" -#: stock/templates/stock/item_base.html:552 +#: stock/templates/stock/item_base.html:547 msgid "Link Barcode to Stock Item" msgstr "Barcode mit Lagerartikel verknüpfen" -#: stock/templates/stock/item_base.html:616 +#: stock/templates/stock/item_base.html:611 msgid "Select one of the part variants listed below." msgstr "Wählen Sie eine der unten aufgeführten Teilvarianten aus." -#: stock/templates/stock/item_base.html:619 +#: stock/templates/stock/item_base.html:614 msgid "Warning" msgstr "Warnung" -#: stock/templates/stock/item_base.html:620 +#: stock/templates/stock/item_base.html:615 msgid "This action cannot be easily undone" msgstr "Diese Aktion kann nicht einfach rückgängig gemacht werden" -#: stock/templates/stock/item_base.html:628 +#: stock/templates/stock/item_base.html:623 msgid "Convert Stock Item" msgstr "Lagerartikel umwandeln" -#: stock/templates/stock/item_base.html:662 +#: stock/templates/stock/item_base.html:657 msgid "Return to Stock" msgstr "Zurück ins Lager" @@ -9625,28 +9756,32 @@ msgstr "Standortbesitzer" msgid "You are not in the list of owners of this location. This stock location cannot be edited." msgstr "Sie sind nicht auf der Liste der Besitzer dieses Lagerorts. Der Bestands-Lagerort kann nicht verändert werden." -#: stock/templates/stock/location.html:217 +#: stock/templates/stock/location.html:176 +msgid "Location Type" +msgstr "Lagerort Typ" + +#: stock/templates/stock/location.html:224 msgid "Create new stock location" msgstr "Neuen Lagerort anlegen" -#: stock/templates/stock/location.html:218 +#: stock/templates/stock/location.html:225 msgid "New Location" msgstr "Neuer Lagerort" -#: stock/templates/stock/location.html:287 +#: stock/templates/stock/location.html:295 #: templates/js/translated/stock.js:2572 msgid "stock location" msgstr "Lagerort" -#: stock/templates/stock/location.html:315 +#: stock/templates/stock/location.html:317 msgid "Scanned stock container into this location" msgstr "Lagerbehälter an diesen Ort eingescannt" -#: stock/templates/stock/location.html:388 +#: stock/templates/stock/location.html:390 msgid "Stock Location QR Code" msgstr "Lagerort QR-Code" -#: stock/templates/stock/location.html:399 +#: stock/templates/stock/location.html:401 msgid "Link Barcode to Stock Location" msgstr "Barcode mit Lagerort verknüpfen" @@ -9718,7 +9853,7 @@ msgstr "Die Seite ist derzeit in Wartung und sollte bald wieder verfügbar sein! #: templates/InvenTree/index.html:7 msgid "Index" -msgstr "" +msgstr "Index" #: templates/InvenTree/index.html:39 msgid "Subscribed Parts" @@ -9872,14 +10007,14 @@ msgstr "Anmeldeeinstellungen" msgid "Outgoing email has not been configured. Some login and sign-up features may not work correctly!" msgstr "Ausgehende E-Mails wurde nicht konfiguriert. Einige Anmelde- und Anmeldefunktionen funktionieren möglicherweise nicht korrekt!" -#: templates/InvenTree/settings/login.html:25 templates/account/signup.html:5 +#: templates/InvenTree/settings/login.html:27 templates/account/signup.html:5 #: templates/socialaccount/signup.html:5 msgid "Signup" msgstr "Anmelden" -#: templates/InvenTree/settings/login.html:34 +#: templates/InvenTree/settings/login.html:36 msgid "Single Sign On" -msgstr "" +msgstr "Single Sign On" #: templates/InvenTree/settings/mixins/settings.html:5 #: templates/InvenTree/settings/settings.html:12 templates/navbar.html:147 @@ -9888,7 +10023,7 @@ msgstr "Einstellungen" #: templates/InvenTree/settings/mixins/urls.html:5 msgid "URLs" -msgstr "" +msgstr "URLs" #: templates/InvenTree/settings/mixins/urls.html:8 #, python-format @@ -9897,7 +10032,7 @@ msgstr "Die Basis-URL für dieses Plugin ist unknown on unknown" msgstr "unbekannt auf unbekanntem" -#: templates/InvenTree/settings/user.html:185 +#: templates/InvenTree/settings/user.html:188 msgid "unknown" msgstr "unbekannt" -#: templates/InvenTree/settings/user.html:189 +#: templates/InvenTree/settings/user.html:192 msgid "IP Address" msgstr "IP Adresse" -#: templates/InvenTree/settings/user.html:190 +#: templates/InvenTree/settings/user.html:193 msgid "Device" msgstr "Gerät" -#: templates/InvenTree/settings/user.html:191 +#: templates/InvenTree/settings/user.html:194 msgid "Last Activity" msgstr "Letzte Aktivität" -#: templates/InvenTree/settings/user.html:204 +#: templates/InvenTree/settings/user.html:207 #, python-format msgid "%(time)s ago (this session)" msgstr "%(time)s vor (diese Sitzung)" -#: templates/InvenTree/settings/user.html:206 +#: templates/InvenTree/settings/user.html:209 #, python-format msgid "%(time)s ago" msgstr "%(time)s vor" -#: templates/InvenTree/settings/user.html:218 +#: templates/InvenTree/settings/user.html:223 msgid "Do you really want to remove the selected email address?" msgstr "Möchten Sie die ausgewählte E-Mail-Adresse wirklich entfernen?" @@ -10505,7 +10640,7 @@ msgstr "Sucheinstellungen" #: templates/InvenTree/settings/user_sso.html:9 msgid "Single Sign On Accounts" -msgstr "" +msgstr "Single Sign On Konten" #: templates/InvenTree/settings/user_sso.html:16 msgid "You can sign in to your account using any of the following third party accounts:" @@ -10569,7 +10704,7 @@ msgstr "Danksagung" #: templates/about.html:79 msgid "Mobile App" -msgstr "" +msgstr "Mobile App" #: templates/about.html:84 msgid "Submit Bug Report" @@ -10607,26 +10742,26 @@ msgstr "Bestätigen" msgid "This email confirmation link expired or is invalid. Please issue a new email confirmation request." msgstr "Dieser E-Mail Bestätigungslink ist abgelaufen oder ungültig. Bitte fordern Sie eine neue E-Mail Bestätigung an." -#: templates/account/login.html:6 templates/account/login.html:17 -#: templates/account/login.html:38 templates/socialaccount/login.html:5 +#: templates/account/login.html:6 templates/account/login.html:19 +#: templates/account/login.html:40 templates/socialaccount/login.html:5 msgid "Sign In" msgstr "Einloggen" -#: templates/account/login.html:21 +#: templates/account/login.html:23 msgid "Not a member?" msgstr "Kein Mitglied?" -#: templates/account/login.html:23 templates/account/signup.html:11 +#: templates/account/login.html:25 templates/account/signup.html:11 #: templates/account/signup.html:22 templates/socialaccount/signup.html:8 #: templates/socialaccount/signup.html:23 msgid "Sign Up" msgstr "Anmelden" -#: templates/account/login.html:45 +#: templates/account/login.html:47 msgid "Forgot Password?" msgstr "Passwort vergessen?" -#: templates/account/login.html:53 +#: templates/account/login.html:55 msgid "or log in with" msgstr "oder melden Sie sich mit" @@ -10827,7 +10962,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:1674 templates/js/translated/build.js:2557 +#: templates/js/translated/bom.js:1674 templates/js/translated/build.js:2556 msgid "Required Quantity" msgstr "Benötigte Menge" @@ -10841,7 +10976,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:3218 +#: templates/js/translated/part.js:3217 msgid "Minimum Quantity" msgstr "Mindestmenge" @@ -11006,7 +11141,7 @@ msgstr "Dadurch wird der Link zu dem zugehörigen Barcode entfernt" msgid "Unlink" msgstr "Verknüpfung aufheben" -#: templates/js/translated/barcode.js:567 templates/js/translated/stock.js:1155 +#: templates/js/translated/barcode.js:567 templates/js/translated/stock.js:1158 msgid "Remove stock item" msgstr "Lagerartikel entfernen" @@ -11196,7 +11331,7 @@ msgstr "Stückliste für Bauteile laden" msgid "Substitutes Available" msgstr "Ersatzteile verfügbar" -#: templates/js/translated/bom.js:950 templates/js/translated/build.js:2501 +#: templates/js/translated/bom.js:950 templates/js/translated/build.js:2500 msgid "Variant stock allowed" msgstr "Alternatives Lager erlaubt" @@ -11216,30 +11351,30 @@ msgstr "Stücklistenpreise sind vollständig" msgid "No pricing available" msgstr "Keine Preisinformation verfügbar" -#: templates/js/translated/bom.js:1184 templates/js/translated/build.js:2622 +#: templates/js/translated/bom.js:1184 templates/js/translated/build.js:2621 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 +#: templates/js/translated/bom.js:1188 templates/js/translated/build.js:2595 +#: templates/js/translated/sales_order.js:1946 msgid "No Stock Available" msgstr "Kein Lagerbestand verfügbar" -#: templates/js/translated/bom.js:1193 templates/js/translated/build.js:2600 +#: templates/js/translated/bom.js:1193 templates/js/translated/build.js:2599 msgid "Includes variant and substitute stock" msgstr "Alternatives Lager und Ersatzteillager einschließen" -#: templates/js/translated/bom.js:1195 templates/js/translated/build.js:2602 +#: templates/js/translated/bom.js:1195 templates/js/translated/build.js:2601 #: templates/js/translated/part.js:1256 -#: templates/js/translated/sales_order.js:1907 +#: templates/js/translated/sales_order.js:1943 msgid "Includes variant stock" msgstr "Alternatives Lager einschließen" -#: templates/js/translated/bom.js:1197 templates/js/translated/build.js:2604 +#: templates/js/translated/bom.js:1197 templates/js/translated/build.js:2603 msgid "Includes substitute stock" msgstr "Ersatzteillager einschließen" -#: templates/js/translated/bom.js:1225 templates/js/translated/build.js:2587 +#: templates/js/translated/bom.js:1225 templates/js/translated/build.js:2586 msgid "Consumable item" msgstr "Verbrauchsartikel" @@ -11271,7 +11406,7 @@ msgstr "Stückliste anzeigen" msgid "No BOM items found" msgstr "Keine Stücklisten-Position(en) gefunden" -#: templates/js/translated/bom.js:1657 templates/js/translated/build.js:2486 +#: templates/js/translated/bom.js:1657 templates/js/translated/build.js:2485 msgid "Required Part" msgstr "Benötigtes Teil" @@ -11440,207 +11575,207 @@ msgstr "Endprodukte entfernen" msgid "No build order allocations found" msgstr "Keine Allokationen für Bauauftrag gefunden" -#: templates/js/translated/build.js:989 templates/js/translated/build.js:2342 +#: templates/js/translated/build.js:991 templates/js/translated/build.js:2344 msgid "Allocated Quantity" msgstr "Zugewiesene Menge" -#: templates/js/translated/build.js:1003 +#: templates/js/translated/build.js:1005 msgid "Location not specified" msgstr "Standort nicht angegeben" -#: templates/js/translated/build.js:1025 +#: templates/js/translated/build.js:1027 msgid "Complete outputs" msgstr "Endprodukte fertigstellen" -#: templates/js/translated/build.js:1043 +#: templates/js/translated/build.js:1045 msgid "Scrap outputs" msgstr "Ausschuss" -#: templates/js/translated/build.js:1061 +#: templates/js/translated/build.js:1063 msgid "Delete outputs" msgstr "Endprodukte löschen" -#: templates/js/translated/build.js:1115 +#: templates/js/translated/build.js:1116 msgid "build output" msgstr "Endprodukt" -#: templates/js/translated/build.js:1116 +#: templates/js/translated/build.js:1117 msgid "build outputs" msgstr "Endprodukte" -#: templates/js/translated/build.js:1120 +#: templates/js/translated/build.js:1121 msgid "Build output actions" msgstr "Endprodukt-Aktionen" -#: templates/js/translated/build.js:1294 +#: templates/js/translated/build.js:1297 msgid "No active build outputs found" msgstr "Keine aktiven Endprodukte gefunden" -#: templates/js/translated/build.js:1387 +#: templates/js/translated/build.js:1390 msgid "Allocated Lines" msgstr "Zugewiesene Positionen" -#: templates/js/translated/build.js:1401 +#: templates/js/translated/build.js:1404 msgid "Required Tests" msgstr "Erforderliche Prüfungen" -#: templates/js/translated/build.js:1573 +#: templates/js/translated/build.js:1576 #: templates/js/translated/purchase_order.js:611 -#: templates/js/translated/sales_order.js:1171 +#: templates/js/translated/sales_order.js:1207 msgid "Select Parts" msgstr "Teile auswählen" -#: templates/js/translated/build.js:1574 -#: templates/js/translated/sales_order.js:1172 +#: templates/js/translated/build.js:1577 +#: templates/js/translated/sales_order.js:1208 msgid "You must select at least one part to allocate" 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 +#: templates/js/translated/build.js:1640 +#: templates/js/translated/sales_order.js:1157 msgid "Specify stock allocation quantity" msgstr "Anzahl für Bestandszuordnung eingeben" -#: templates/js/translated/build.js:1714 +#: templates/js/translated/build.js:1717 msgid "All Parts Allocated" msgstr "Alle Teile zugeordnet" -#: templates/js/translated/build.js:1715 +#: templates/js/translated/build.js:1718 msgid "All selected parts have been fully allocated" msgstr "Alle ausgewählten Teile wurden vollständig zugeordnet" -#: templates/js/translated/build.js:1729 -#: templates/js/translated/sales_order.js:1186 +#: templates/js/translated/build.js:1732 +#: templates/js/translated/sales_order.js:1222 msgid "Select source location (leave blank to take from all locations)" msgstr "Wählen Sie den Quellort aus (leer lassen, um von allen Standorten zu nehmen)" -#: templates/js/translated/build.js:1757 +#: templates/js/translated/build.js:1760 msgid "Allocate Stock Items to Build Order" msgstr "Lagerartikel für Bauauftrag zuweisen" -#: templates/js/translated/build.js:1768 -#: templates/js/translated/sales_order.js:1283 +#: templates/js/translated/build.js:1771 +#: templates/js/translated/sales_order.js:1319 msgid "No matching stock locations" msgstr "Keine passenden Lagerstandorte" -#: templates/js/translated/build.js:1841 -#: templates/js/translated/sales_order.js:1362 +#: templates/js/translated/build.js:1844 +#: templates/js/translated/sales_order.js:1398 msgid "No matching stock items" msgstr "Keine passenden Lagerartikel" -#: templates/js/translated/build.js:1938 +#: templates/js/translated/build.js:1941 msgid "Automatic Stock Allocation" msgstr "Automatische Lagerzuordnung" -#: templates/js/translated/build.js:1939 +#: templates/js/translated/build.js:1942 msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines" msgstr "Lagerartikel werden automatisch diesem Bauauftrag zugewiesen, entsprechend den angegebenen Richtlinien" -#: templates/js/translated/build.js:1941 +#: templates/js/translated/build.js:1944 msgid "If a location is specified, stock will only be allocated from that location" msgstr "Wenn ein Lagerort angegeben ist, wird der Lagerbestand nur von diesem Ort zugewiesen" -#: templates/js/translated/build.js:1942 +#: templates/js/translated/build.js:1945 msgid "If stock is considered interchangeable, it will be allocated from the first location it is found" msgstr "Wenn der Lagerbestand als austauschbar gilt, wird er vom ersten Standort zugewiesen, an dem er gefunden wird" -#: templates/js/translated/build.js:1943 +#: templates/js/translated/build.js:1946 msgid "If substitute stock is allowed, it will be used where stock of the primary part cannot be found" msgstr "Wenn ein Ersatzlager zugelassen ist, wird dieses verwendet, wenn das Primärteil nicht vorrätig ist" -#: templates/js/translated/build.js:1974 +#: templates/js/translated/build.js:1977 msgid "Allocate Stock Items" msgstr "Lagerartikel zuordnen" -#: templates/js/translated/build.js:2080 +#: templates/js/translated/build.js:2082 msgid "No builds matching query" 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:1982 templates/js/translated/stock.js:2710 +#: templates/js/translated/build.js:2117 templates/js/translated/build.js:2479 +#: templates/js/translated/forms.js:2163 templates/js/translated/forms.js:2179 +#: templates/js/translated/part.js:2315 templates/js/translated/part.js:2741 +#: templates/js/translated/stock.js:1983 templates/js/translated/stock.js:2710 msgid "Select" msgstr "Auswählen" -#: templates/js/translated/build.js:2129 +#: templates/js/translated/build.js:2131 msgid "Build order is overdue" msgstr "Bauauftrag ist überfällig" -#: templates/js/translated/build.js:2175 -msgid "Progress" -msgstr "Fortschritt" - -#: templates/js/translated/build.js:2211 templates/js/translated/stock.js:3042 +#: templates/js/translated/build.js:2213 templates/js/translated/stock.js:3042 msgid "No user information" msgstr "Keine Benutzerinformation" -#: templates/js/translated/build.js:2387 -#: templates/js/translated/sales_order.js:1646 +#: templates/js/translated/build.js:2389 +#: templates/js/translated/sales_order.js:1682 msgid "Edit stock allocation" msgstr "Bestands-Zuordnung bearbeiten" -#: templates/js/translated/build.js:2388 -#: templates/js/translated/sales_order.js:1647 +#: templates/js/translated/build.js:2390 +#: templates/js/translated/sales_order.js:1683 msgid "Delete stock allocation" msgstr "Bestands-Zuordnung löschen" -#: templates/js/translated/build.js:2403 +#: templates/js/translated/build.js:2405 msgid "Edit Allocation" msgstr "Zuordnung bearbeiten" -#: templates/js/translated/build.js:2415 +#: templates/js/translated/build.js:2417 msgid "Remove Allocation" msgstr "Zuordnung entfernen" -#: templates/js/translated/build.js:2456 +#: templates/js/translated/build.js:2455 msgid "build line" msgstr "Bauauftragsposition" -#: templates/js/translated/build.js:2457 +#: templates/js/translated/build.js:2456 msgid "build lines" msgstr "Bauauftragspositionen" -#: templates/js/translated/build.js:2475 +#: templates/js/translated/build.js:2474 msgid "No build lines found" msgstr "Keine Bauauftragspositionen gefunden" -#: templates/js/translated/build.js:2505 templates/js/translated/part.js:790 +#: templates/js/translated/build.js:2504 templates/js/translated/part.js:790 #: templates/js/translated/part.js:1202 msgid "Trackable part" msgstr "Nachverfolgbares Teil" -#: templates/js/translated/build.js:2540 +#: templates/js/translated/build.js:2539 msgid "Unit Quantity" msgstr "Menge" -#: templates/js/translated/build.js:2592 -#: templates/js/translated/sales_order.js:1915 +#: templates/js/translated/build.js:2591 +#: templates/js/translated/sales_order.js:1951 msgid "Sufficient stock available" msgstr "Ausreichender Bestand vorhanden" -#: templates/js/translated/build.js:2647 +#: templates/js/translated/build.js:2646 msgid "Consumable Item" msgstr "Verbrauchsartikel" -#: templates/js/translated/build.js:2652 +#: templates/js/translated/build.js:2653 msgid "Tracked item" msgstr "Verfolgtes Objekt" -#: templates/js/translated/build.js:2659 -#: templates/js/translated/sales_order.js:2016 +#: templates/js/translated/build.js:2654 +msgid "Allocate tracked items against individual build outputs" +msgstr "Zuweisung von nachverfolgbaren Artikeln zu einzelnen Bauprodukten" + +#: templates/js/translated/build.js:2662 +#: templates/js/translated/sales_order.js:2052 msgid "Build stock" msgstr "Bestand bauen" -#: templates/js/translated/build.js:2664 templates/js/translated/stock.js:1865 +#: templates/js/translated/build.js:2667 templates/js/translated/stock.js:1868 msgid "Order stock" msgstr "Bestand bestellen" -#: templates/js/translated/build.js:2668 -#: templates/js/translated/sales_order.js:2010 +#: templates/js/translated/build.js:2671 +#: templates/js/translated/sales_order.js:2046 msgid "Allocate stock" msgstr "Bestand zuweisen" -#: templates/js/translated/build.js:2672 +#: templates/js/translated/build.js:2675 msgid "Remove stock allocation" msgstr "Bestands-Zuordnung löschen" @@ -11886,12 +12021,12 @@ msgid "Delete price break" msgstr "Staffelpreis löschen" #: templates/js/translated/filters.js:186 -#: templates/js/translated/filters.js:672 +#: templates/js/translated/filters.js:667 msgid "true" msgstr "wahr" #: templates/js/translated/filters.js:190 -#: templates/js/translated/filters.js:673 +#: templates/js/translated/filters.js:668 msgid "false" msgstr "falsch" @@ -11923,7 +12058,7 @@ msgstr "Neuen Filter hinzufügen" msgid "Clear all filters" msgstr "Alle Filter entfernen" -#: templates/js/translated/filters.js:582 +#: templates/js/translated/filters.js:577 msgid "Create filter" msgstr "Filter erstellen" @@ -11956,32 +12091,32 @@ msgstr "Dieses Formular offen lassen" msgid "Enter a valid number" msgstr "Gib eine gültige Nummer ein" -#: templates/js/translated/forms.js:1473 templates/modals.html:19 +#: templates/js/translated/forms.js:1477 templates/modals.html:19 #: templates/modals.html:43 msgid "Form errors exist" msgstr "Fehler in Formular" -#: templates/js/translated/forms.js:1971 +#: templates/js/translated/forms.js:1975 msgid "No results found" msgstr "Keine Ergebnisse gefunden" -#: templates/js/translated/forms.js:2275 templates/js/translated/search.js:239 +#: templates/js/translated/forms.js:2285 templates/js/translated/search.js:239 msgid "Searching" msgstr "Suche" -#: templates/js/translated/forms.js:2489 +#: templates/js/translated/forms.js:2499 msgid "Clear input" msgstr "Eingabe löschen" -#: templates/js/translated/forms.js:3091 +#: templates/js/translated/forms.js:3101 msgid "File Column" msgstr "Dateispalte" -#: templates/js/translated/forms.js:3091 +#: templates/js/translated/forms.js:3101 msgid "Field Name" msgstr "Feldname" -#: templates/js/translated/forms.js:3103 +#: templates/js/translated/forms.js:3113 msgid "Select Columns" msgstr "Spalten auswählen" @@ -12005,51 +12140,15 @@ msgstr "Falsch" msgid "No parts required for builds" msgstr "Keine Ersatzteile für Montage erforderlich" -#: templates/js/translated/label.js:53 templates/js/translated/report.js:123 +#: templates/js/translated/label.js:55 templates/js/translated/report.js:38 msgid "Select Items" msgstr "Elemente auswählen" -#: templates/js/translated/label.js:54 +#: templates/js/translated/label.js:56 templates/js/translated/report.js:39 msgid "No items selected for printing" msgstr "Keine Elemente zum Drucken ausgewählt" -#: templates/js/translated/label.js:72 -msgid "No Labels Found" -msgstr "Keine Etiketten gefunden" - -#: templates/js/translated/label.js:73 -msgid "No label templates found which match the selected items" -msgstr "Keine Berichtvorlagen für ausgewählte Bestellungen gefunden" - -#: templates/js/translated/label.js:97 -msgid "selected" -msgstr "ausgewählt" - -#: templates/js/translated/label.js:133 -msgid "Printing Options" -msgstr "Druckoptionen" - -#: templates/js/translated/label.js:148 -msgid "Print label" -msgstr "Etikett drucken" - -#: templates/js/translated/label.js:148 -msgid "Print labels" -msgstr "Etiketten drucken" - -#: templates/js/translated/label.js:149 -msgid "Print" -msgstr "Drucken" - -#: templates/js/translated/label.js:155 -msgid "Select label template" -msgstr "Etiketten-Vorlage auswählen" - -#: templates/js/translated/label.js:168 -msgid "Select plugin" -msgstr "Plugin auswählen" - -#: templates/js/translated/label.js:187 +#: templates/js/translated/label.js:150 msgid "Labels sent to printer" msgstr "Etiketten an den Drucker senden" @@ -12120,7 +12219,7 @@ msgstr "Keine Nachrichten gefunden" #: templates/js/translated/notification.js:46 #: templates/js/translated/part.js:1604 msgid "ID" -msgstr "" +msgstr "ID" #: templates/js/translated/notification.js:52 msgid "Age" @@ -12167,7 +12266,7 @@ msgid "Delete Line" msgstr "Position löschen" #: templates/js/translated/order.js:281 -#: templates/js/translated/purchase_order.js:1991 +#: templates/js/translated/purchase_order.js:1990 msgid "No line items found" msgstr "Keine Postionen gefunden" @@ -12245,47 +12344,47 @@ msgstr "Aktion für Unterkategorien" #: templates/js/translated/part.js:430 msgid "Create Part" -msgstr "" +msgstr "Teil erstellen" #: templates/js/translated/part.js:432 msgid "Create another part after this one" -msgstr "" +msgstr "Weiteres Teil nach diesem erstellen" #: templates/js/translated/part.js:433 msgid "Part created successfully" -msgstr "" +msgstr "Teil erfolgreich angelegt" #: templates/js/translated/part.js:461 msgid "Edit Part" -msgstr "" +msgstr "Teil bearbeiten" #: templates/js/translated/part.js:463 msgid "Part edited" -msgstr "" +msgstr "Teil bearbeitet" #: templates/js/translated/part.js:474 msgid "Create Part Variant" -msgstr "" +msgstr "Teil-Variante anlegen" #: templates/js/translated/part.js:531 msgid "Active Part" -msgstr "" +msgstr "Aktives Teil" #: templates/js/translated/part.js:532 msgid "Part cannot be deleted as it is currently active" -msgstr "" +msgstr "Teil kann nicht gelöscht werden, da es derzeit aktiv ist" #: templates/js/translated/part.js:546 msgid "Deleting this part cannot be reversed" -msgstr "" +msgstr "Das Löschen dieses Teils kann nicht rückgängig gemacht werden" #: templates/js/translated/part.js:548 msgid "Any stock items for this part will be deleted" -msgstr "" +msgstr "Alle Lagerartikel für dieses Teil werden gelöscht" #: templates/js/translated/part.js:549 msgid "This part will be removed from any Bills of Material" -msgstr "" +msgstr "Dieses Teil wird von allen Stücklisten entfernt" #: templates/js/translated/part.js:550 msgid "All manufacturer and supplier information for this part will be deleted" @@ -12405,19 +12504,19 @@ msgid "Delete Part Parameter Template" msgstr "Teileparametervorlage löschen" #: templates/js/translated/part.js:1716 -#: templates/js/translated/purchase_order.js:1655 +#: templates/js/translated/purchase_order.js:1654 msgid "No purchase orders found" msgstr "Keine Bestellungen gefunden" #: templates/js/translated/part.js:1860 -#: templates/js/translated/purchase_order.js:2154 -#: templates/js/translated/return_order.js:756 -#: templates/js/translated/sales_order.js:1875 +#: templates/js/translated/purchase_order.js:2153 +#: templates/js/translated/return_order.js:755 +#: templates/js/translated/sales_order.js:1911 msgid "This line item is overdue" msgstr "Diese Position ist überfällig" #: templates/js/translated/part.js:1906 -#: templates/js/translated/purchase_order.js:2221 +#: templates/js/translated/purchase_order.js:2220 msgid "Receive line item" msgstr "Position empfangen" @@ -12429,7 +12528,7 @@ msgstr "Teilebeziehung löschen" msgid "Delete Part Relationship" msgstr "Teilebeziehung löschen" -#: templates/js/translated/part.js:2079 templates/js/translated/part.js:2506 +#: templates/js/translated/part.js:2079 templates/js/translated/part.js:2505 msgid "No parts found" msgstr "Keine Teile gefunden" @@ -12445,195 +12544,195 @@ msgstr "Teilekategorie auswählen" msgid "Set category" msgstr "Kategorie wählen" -#: templates/js/translated/part.js:2287 +#: templates/js/translated/part.js:2286 msgid "part" msgstr "Teil" -#: templates/js/translated/part.js:2288 +#: templates/js/translated/part.js:2287 msgid "parts" msgstr "Teile" -#: templates/js/translated/part.js:2384 +#: templates/js/translated/part.js:2383 msgid "No category" msgstr "Keine Kategorien" -#: templates/js/translated/part.js:2531 templates/js/translated/part.js:2661 +#: templates/js/translated/part.js:2530 templates/js/translated/part.js:2660 #: templates/js/translated/stock.js:2669 msgid "Display as list" msgstr "Als Liste anzeigen" -#: templates/js/translated/part.js:2547 +#: templates/js/translated/part.js:2546 msgid "Display as grid" msgstr "Als Raster anzeigen" -#: templates/js/translated/part.js:2645 +#: templates/js/translated/part.js:2644 msgid "No subcategories found" msgstr "Keine Unterkategorien gefunden" -#: templates/js/translated/part.js:2681 templates/js/translated/stock.js:2689 +#: templates/js/translated/part.js:2680 templates/js/translated/stock.js:2689 msgid "Display as tree" msgstr "Als Baum anzeigen" -#: templates/js/translated/part.js:2761 +#: templates/js/translated/part.js:2760 msgid "Load Subcategories" msgstr "Unterkategorien laden" -#: templates/js/translated/part.js:2777 +#: templates/js/translated/part.js:2776 msgid "Subscribed category" msgstr "Abonnierte Kategorie" -#: templates/js/translated/part.js:2864 +#: templates/js/translated/part.js:2863 msgid "No test templates matching query" msgstr "Keine passenden Testvorlagen gefunden" -#: templates/js/translated/part.js:2886 templates/js/translated/search.js:342 +#: templates/js/translated/part.js:2885 templates/js/translated/search.js:342 msgid "results" msgstr "Ergebnisse" -#: templates/js/translated/part.js:2936 templates/js/translated/stock.js:1453 +#: templates/js/translated/part.js:2935 templates/js/translated/stock.js:1456 msgid "Edit test result" msgstr "Testergebnis bearbeiten" -#: templates/js/translated/part.js:2937 templates/js/translated/stock.js:1454 -#: templates/js/translated/stock.js:1728 +#: templates/js/translated/part.js:2936 templates/js/translated/stock.js:1457 +#: templates/js/translated/stock.js:1731 msgid "Delete test result" msgstr "Testergebnis löschen" -#: templates/js/translated/part.js:2941 +#: templates/js/translated/part.js:2940 msgid "This test is defined for a parent part" msgstr "Dieser Test ist für ein übergeordnetes Teil definiert" -#: templates/js/translated/part.js:2957 +#: templates/js/translated/part.js:2956 msgid "Edit Test Result Template" msgstr "Vorlage für Testergebnis bearbeiten" -#: templates/js/translated/part.js:2971 +#: templates/js/translated/part.js:2970 msgid "Delete Test Result Template" msgstr "Vorlage für Testergebnis löschen" -#: templates/js/translated/part.js:3050 templates/js/translated/part.js:3051 +#: templates/js/translated/part.js:3049 templates/js/translated/part.js:3050 msgid "No date specified" msgstr "Kein Datum angegeben" -#: templates/js/translated/part.js:3053 +#: templates/js/translated/part.js:3052 msgid "Specified date is in the past" msgstr "Das angegebene Datum liegt in der Vergangenheit" -#: templates/js/translated/part.js:3059 +#: templates/js/translated/part.js:3058 msgid "Speculative" msgstr "Spekulativ" -#: templates/js/translated/part.js:3109 +#: templates/js/translated/part.js:3108 msgid "No scheduling information available for this part" -msgstr "" +msgstr "Keine Zeitplanung für dieses Teil vorhanden" -#: templates/js/translated/part.js:3115 +#: templates/js/translated/part.js:3114 msgid "Error fetching scheduling information for this part" -msgstr "" +msgstr "Fehler beim Abrufen der Zeitplanungsinformationen für dieses Teil" -#: templates/js/translated/part.js:3211 +#: templates/js/translated/part.js:3210 msgid "Scheduled Stock Quantities" -msgstr "" +msgstr "Geplante Lagermengen" -#: templates/js/translated/part.js:3227 +#: templates/js/translated/part.js:3226 msgid "Maximum Quantity" msgstr "Maximale Menge" -#: templates/js/translated/part.js:3272 +#: templates/js/translated/part.js:3271 msgid "Minimum Stock Level" -msgstr "" +msgstr "Minimaler Lagerbestand" #: templates/js/translated/plugin.js:46 msgid "No plugins found" -msgstr "" +msgstr "Keine Plugins gefunden" #: templates/js/translated/plugin.js:58 msgid "This plugin is no longer installed" -msgstr "" +msgstr "Dieses Plugin ist nicht mehr installiert" #: templates/js/translated/plugin.js:60 msgid "This plugin is active" -msgstr "" +msgstr "Dieses Plugin ist aktiv" #: templates/js/translated/plugin.js:62 msgid "This plugin is installed but not active" -msgstr "" +msgstr "Dieses Plugin ist installiert, aber nicht aktiv" #: templates/js/translated/plugin.js:117 templates/js/translated/plugin.js:186 msgid "Disable Plugin" -msgstr "" +msgstr "Plugin deaktivieren" #: templates/js/translated/plugin.js:119 templates/js/translated/plugin.js:186 msgid "Enable Plugin" -msgstr "" +msgstr "Plugin aktivieren" #: templates/js/translated/plugin.js:158 msgid "The Plugin was installed" -msgstr "" +msgstr "Das Plugin wurde installiert" #: templates/js/translated/plugin.js:177 msgid "Are you sure you want to enable this plugin?" -msgstr "" +msgstr "Soll dieses Plugin aktiviert werden?" #: templates/js/translated/plugin.js:181 msgid "Are you sure you want to disable this plugin?" -msgstr "" +msgstr "Soll dieses Plugin deaktiviert werden?" #: templates/js/translated/plugin.js:189 msgid "Enable" -msgstr "" +msgstr "Aktivieren" #: templates/js/translated/plugin.js:189 msgid "Disable" -msgstr "" +msgstr "Deaktivieren" #: templates/js/translated/plugin.js:203 msgid "Plugin updated" -msgstr "" +msgstr "Plugin aktualisiert" #: templates/js/translated/pricing.js:159 msgid "Error fetching currency data" -msgstr "" +msgstr "Fehler beim Abrufen der Währungsdaten" #: templates/js/translated/pricing.js:321 msgid "No BOM data available" -msgstr "" +msgstr "Keine Stücklisten-Daten verfügbar" #: templates/js/translated/pricing.js:463 msgid "No supplier pricing data available" -msgstr "" +msgstr "Keine Zulieferer-Preise verfügbar" #: templates/js/translated/pricing.js:572 msgid "No price break data available" -msgstr "" +msgstr "Keine Staffelpreisdaten verfügbar" #: templates/js/translated/pricing.js:755 msgid "No purchase history data available" -msgstr "" +msgstr "Keine Einkaufshistorie verfügbar" #: templates/js/translated/pricing.js:791 msgid "Purchase Price History" -msgstr "" +msgstr "Kaufpreisverlauf" #: templates/js/translated/pricing.js:894 msgid "No sales history data available" -msgstr "" +msgstr "Keine Verkaufshistorie verfügbar" #: templates/js/translated/pricing.js:916 msgid "Sale Price History" -msgstr "" +msgstr "Verkaufspreisverlauf" #: templates/js/translated/pricing.js:1005 msgid "No variant data available" -msgstr "" +msgstr "Keine Variantendaten verfügbar" #: templates/js/translated/pricing.js:1045 msgid "Variant Part" -msgstr "" +msgstr "Variantenteil" #: templates/js/translated/purchase_order.js:169 msgid "Select purchase order to duplicate" -msgstr "" +msgstr "Bestellung zum Duplizieren auswählen" #: templates/js/translated/purchase_order.js:176 msgid "Duplicate Line Items" @@ -12653,21 +12752,21 @@ msgstr "Zusätzliche Positionen der ausgewählten Bestellung duplizieren" #: templates/js/translated/purchase_order.js:206 msgid "Edit Purchase Order" -msgstr "" +msgstr "Bestellung bearbeiten" #: templates/js/translated/purchase_order.js:223 msgid "Duplication Options" -msgstr "" +msgstr "Duplizierungsoptionen" #: templates/js/translated/purchase_order.js:431 msgid "Complete Purchase Order" -msgstr "" +msgstr "Bestellung abschließen" #: templates/js/translated/purchase_order.js:448 #: templates/js/translated/return_order.js:210 -#: templates/js/translated/sales_order.js:500 +#: templates/js/translated/sales_order.js:552 msgid "Mark this order as complete?" -msgstr "" +msgstr "Diese Bestellung als vollständig markieren?" #: templates/js/translated/purchase_order.js:454 msgid "All line items have been received" @@ -12678,21 +12777,20 @@ msgid "This order has line items which have not been marked as received." msgstr "Diese Bestellung enthält Positionen, die nicht als empfangen markiert wurden." #: 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 "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" -msgstr "" +msgstr "Bestellung stornieren" #: templates/js/translated/purchase_order.js:488 msgid "Are you sure you wish to cancel this purchase order?" -msgstr "" +msgstr "Soll die Bestellung storniert werden?" #: templates/js/translated/purchase_order.js:494 msgid "This purchase order can not be cancelled" -msgstr "" +msgstr "Diese Bestellung kann nicht storniert werden" #: templates/js/translated/purchase_order.js:515 #: templates/js/translated/return_order.js:164 @@ -12701,11 +12799,11 @@ msgstr "Nachdem diese Bestellung platziert ist, können die Positionen nicht lä #: templates/js/translated/purchase_order.js:520 msgid "Issue Purchase Order" -msgstr "" +msgstr "Bestellung aufgeben" #: templates/js/translated/purchase_order.js:612 msgid "At least one purchaseable part must be selected" -msgstr "" +msgstr "Mindestens ein kaufbares Teil muss ausgewählt werden" #: templates/js/translated/purchase_order.js:637 msgid "Quantity to order" @@ -12713,15 +12811,15 @@ msgstr "Zu bestellende Menge" #: templates/js/translated/purchase_order.js:646 msgid "New supplier part" -msgstr "" +msgstr "Neues Zuliefererteil" #: templates/js/translated/purchase_order.js:664 msgid "New purchase order" -msgstr "" +msgstr "Neue Bestellung" #: templates/js/translated/purchase_order.js:705 msgid "Add to purchase order" -msgstr "" +msgstr "Zur Bestellung hinzufügen" #: templates/js/translated/purchase_order.js:755 msgid "Merge" @@ -12729,19 +12827,19 @@ msgstr "Zusammenfügen" #: templates/js/translated/purchase_order.js:859 msgid "No matching supplier parts" -msgstr "" +msgstr "Keine passenden Lieferantenteile" #: templates/js/translated/purchase_order.js:878 msgid "No matching purchase orders" -msgstr "" +msgstr "Keine passenden Bestellungen" #: templates/js/translated/purchase_order.js:1073 -#: templates/js/translated/return_order.js:491 +#: templates/js/translated/return_order.js:490 msgid "Select Line Items" msgstr "Positionen auswählen" #: templates/js/translated/purchase_order.js:1074 -#: templates/js/translated/return_order.js:492 +#: templates/js/translated/return_order.js:491 msgid "At least one line item must be selected" msgstr "Mindestens eine Position muss ausgewählt werden" @@ -12755,42 +12853,42 @@ msgstr "Zu erhaltende Menge" #: templates/js/translated/purchase_order.js:1191 msgid "Stock Status" -msgstr "" +msgstr "Bestandsstatus" #: templates/js/translated/purchase_order.js:1205 msgid "Add barcode" -msgstr "" +msgstr "Barcode hinzufügen" #: templates/js/translated/purchase_order.js:1206 msgid "Remove barcode" -msgstr "" +msgstr "Barcode entfernen" #: templates/js/translated/purchase_order.js:1209 msgid "Specify location" -msgstr "" +msgstr "Lagerort angeben" #: templates/js/translated/purchase_order.js:1217 msgid "Add batch code" -msgstr "" +msgstr "Losnummer hinzufügen" #: templates/js/translated/purchase_order.js:1228 msgid "Add serial numbers" -msgstr "" +msgstr "Seriennummern hinzufügen" #: templates/js/translated/purchase_order.js:1280 msgid "Serials" -msgstr "" +msgstr "Seriennummern" #: templates/js/translated/purchase_order.js:1305 msgid "Order Code" -msgstr "" +msgstr "Bestellnummer" #: templates/js/translated/purchase_order.js:1307 msgid "Quantity to Receive" msgstr "Zu erhaltende Menge" #: templates/js/translated/purchase_order.js:1333 -#: templates/js/translated/return_order.js:561 +#: templates/js/translated/return_order.js:560 msgid "Confirm receipt of items" msgstr "Empfang der Artikel bestätigen" @@ -12810,133 +12908,118 @@ msgstr "Scanne den Barcode am erhaltenen Artikel (darf nicht mit einem existiere msgid "Invalid barcode data" 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 +#: templates/js/translated/purchase_order.js:1681 +#: templates/js/translated/return_order.js:285 +#: templates/js/translated/sales_order.js:810 +#: templates/js/translated/sales_order.js:1034 msgid "Order is overdue" msgstr "Bestellung ist überfällig" -#: 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 +#: templates/js/translated/purchase_order.js:1843 msgid "All selected Line items will be deleted" msgstr "Alle ausgewählten Positionen werden gelöscht" -#: templates/js/translated/purchase_order.js:1862 +#: templates/js/translated/purchase_order.js:1861 msgid "Delete selected Line items?" msgstr "Ausgewählte Positionen löschen?" -#: templates/js/translated/purchase_order.js:1917 -#: templates/js/translated/sales_order.js:2070 +#: templates/js/translated/purchase_order.js:1916 +#: templates/js/translated/sales_order.js:2106 msgid "Duplicate Line Item" 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 +#: templates/js/translated/purchase_order.js:1931 +#: templates/js/translated/return_order.js:475 +#: templates/js/translated/return_order.js:668 +#: templates/js/translated/sales_order.js:2119 msgid "Edit Line Item" msgstr "Position bearbeiten" -#: templates/js/translated/purchase_order.js:1943 -#: templates/js/translated/return_order.js:682 -#: templates/js/translated/sales_order.js:2094 +#: templates/js/translated/purchase_order.js:1942 +#: templates/js/translated/return_order.js:681 +#: templates/js/translated/sales_order.js:2130 msgid "Delete Line Item" msgstr "Position löschen" -#: templates/js/translated/purchase_order.js:2225 -#: templates/js/translated/sales_order.js:2024 +#: templates/js/translated/purchase_order.js:2224 +#: templates/js/translated/sales_order.js:2060 msgid "Duplicate line item" msgstr "Position duplizieren" -#: templates/js/translated/purchase_order.js:2226 -#: templates/js/translated/return_order.js:801 -#: templates/js/translated/sales_order.js:2025 +#: templates/js/translated/purchase_order.js:2225 +#: templates/js/translated/return_order.js:800 +#: templates/js/translated/sales_order.js:2061 msgid "Edit line item" msgstr "Position bearbeiten" -#: templates/js/translated/purchase_order.js:2227 -#: templates/js/translated/return_order.js:805 -#: templates/js/translated/sales_order.js:2031 +#: templates/js/translated/purchase_order.js:2226 +#: templates/js/translated/return_order.js:804 +#: templates/js/translated/sales_order.js:2067 msgid "Delete line item" msgstr "Position löschen" -#: templates/js/translated/report.js:63 -msgid "items selected" +#: templates/js/translated/report.js:49 +msgid "Print Report" msgstr "" -#: templates/js/translated/report.js:71 -msgid "Select Report Template" +#: templates/js/translated/report.js:68 +msgid "Report print successful" 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" +#: templates/js/translated/report.js:73 +msgid "Report printing failed" msgstr "" #: templates/js/translated/return_order.js:60 #: templates/js/translated/sales_order.js:86 msgid "Add Customer" -msgstr "" +msgstr "Kunden hinzufügen" #: templates/js/translated/return_order.js:134 msgid "Create Return Order" -msgstr "" +msgstr "Rücksendeauftrag erstellen" #: templates/js/translated/return_order.js:149 msgid "Edit Return Order" -msgstr "" +msgstr "Rücksendeauftrag bearbeiten" #: templates/js/translated/return_order.js:169 msgid "Issue Return Order" -msgstr "" +msgstr "Neuer Rücksendeauftrag" #: templates/js/translated/return_order.js:186 msgid "Are you sure you wish to cancel this Return Order?" -msgstr "" +msgstr "Soll der Rücksendeauftrag storniert werden?" #: templates/js/translated/return_order.js:193 msgid "Cancel Return Order" -msgstr "" +msgstr "Rücksendeauftrag stornieren" #: templates/js/translated/return_order.js:218 msgid "Complete Return Order" -msgstr "" +msgstr "Rücksendeauftrag abschließen" -#: templates/js/translated/return_order.js:266 +#: templates/js/translated/return_order.js:265 msgid "No return orders found" -msgstr "" +msgstr "Kein Rücksendeauftrag gefunden" -#: templates/js/translated/return_order.js:300 -#: templates/js/translated/sales_order.js:788 +#: templates/js/translated/return_order.js:299 +#: templates/js/translated/sales_order.js:824 msgid "Invalid Customer" -msgstr "" +msgstr "Ungültiger Kunde" -#: templates/js/translated/return_order.js:562 +#: templates/js/translated/return_order.js:561 msgid "Receive Return Order Items" -msgstr "" +msgstr "Rücksendeauftragspositionen erhalten" -#: templates/js/translated/return_order.js:693 -#: templates/js/translated/sales_order.js:2231 +#: templates/js/translated/return_order.js:692 +#: templates/js/translated/sales_order.js:2267 msgid "No matching line items" msgstr "Keine passenden Positionen gefunden" -#: templates/js/translated/return_order.js:798 +#: templates/js/translated/return_order.js:797 msgid "Mark item as received" -msgstr "" +msgstr "Artikel als empfangen markieren" #: templates/js/translated/sales_order.js:161 msgid "Create Sales Order" @@ -12948,176 +13031,192 @@ msgstr "Auftrag bearbeiten" #: templates/js/translated/sales_order.js:291 msgid "No stock items have been allocated to this shipment" -msgstr "" +msgstr "Dieser Sendung wurden keine Lagerartikel zugewiesen" #: templates/js/translated/sales_order.js:296 msgid "The following stock items will be shipped" -msgstr "" +msgstr "Die folgenden Lagerartikel werden verschickt" #: templates/js/translated/sales_order.js:336 msgid "Complete Shipment" -msgstr "" +msgstr "Lieferung fertigstellen" #: templates/js/translated/sales_order.js:360 msgid "Confirm Shipment" -msgstr "" +msgstr "Lieferung bestätigen" #: templates/js/translated/sales_order.js:416 msgid "No pending shipments found" -msgstr "" +msgstr "Keine ausstehenden Sendungen gefunden" #: templates/js/translated/sales_order.js:420 msgid "No stock items have been allocated to pending shipments" -msgstr "" +msgstr "Keine Lagerartikel wurden offenen Sendungen zugewiesen" #: templates/js/translated/sales_order.js:430 msgid "Complete Shipments" -msgstr "" +msgstr "Lieferung fertigstellen" #: templates/js/translated/sales_order.js:452 msgid "Skip" -msgstr "" +msgstr "Überspringen" + +#: templates/js/translated/sales_order.js:484 +msgid "Ship Sales Order" +msgstr "Auftrag versenden" + +#: templates/js/translated/sales_order.js:500 +msgid "Ship this order?" +msgstr "Bestellung versenden?" + +#: templates/js/translated/sales_order.js:506 +msgid "Order cannot be shipped as there are incomplete shipments" +msgstr "Auftrag kann nicht abgeschlossen werden, da unvollständige Sendungen vorhanden sind" #: templates/js/translated/sales_order.js:513 msgid "This order has line items which have not been completed." msgstr "Dieser Auftrag enthält Positionen, die noch nicht abgeschlossen sind." -#: templates/js/translated/sales_order.js:535 +#: templates/js/translated/sales_order.js:514 +msgid "Shipping this order means that the order and line items will no longer be editable." +msgstr "Versenden dieses Auftrags bedeutet, dass der Auftrag und seine Positionen nicht mehr bearbeitbar sind." + +#: templates/js/translated/sales_order.js:572 msgid "Issue this Sales Order?" msgstr "Diesen Auftrag aufgeben?" -#: templates/js/translated/sales_order.js:540 +#: templates/js/translated/sales_order.js:577 msgid "Issue Sales Order" msgstr "Auftrag aufgeben" -#: templates/js/translated/sales_order.js:559 +#: templates/js/translated/sales_order.js:596 msgid "Cancel Sales Order" msgstr "Auftrag stornieren" -#: templates/js/translated/sales_order.js:564 +#: templates/js/translated/sales_order.js:601 msgid "Cancelling this order means that the order will no longer be editable." -msgstr "" +msgstr "Stornieren dieser Bestellung bedeutet, dass sie nicht länger bearbeitbar ist." -#: templates/js/translated/sales_order.js:618 +#: templates/js/translated/sales_order.js:655 msgid "Create New Shipment" -msgstr "" +msgstr "Neue Lieferung erstellen" -#: templates/js/translated/sales_order.js:728 +#: templates/js/translated/sales_order.js:764 msgid "No sales orders found" msgstr "Keine Aufträge gefunden" -#: templates/js/translated/sales_order.js:908 +#: templates/js/translated/sales_order.js:944 msgid "Edit shipment" -msgstr "" +msgstr "Lieferung bearbeiten" -#: templates/js/translated/sales_order.js:911 +#: templates/js/translated/sales_order.js:947 msgid "Complete shipment" -msgstr "" +msgstr "Lieferung fertigstellen" -#: templates/js/translated/sales_order.js:916 +#: templates/js/translated/sales_order.js:952 msgid "Delete shipment" -msgstr "" +msgstr "Lieferung löschen" -#: templates/js/translated/sales_order.js:933 +#: templates/js/translated/sales_order.js:969 msgid "Edit Shipment" -msgstr "" +msgstr "Lieferung bearbeiten" -#: templates/js/translated/sales_order.js:948 +#: templates/js/translated/sales_order.js:984 msgid "Delete Shipment" -msgstr "" +msgstr "Lieferung löschen" -#: templates/js/translated/sales_order.js:981 +#: templates/js/translated/sales_order.js:1017 msgid "No matching shipments found" -msgstr "" +msgstr "Keine passende Lieferung gefunden" -#: templates/js/translated/sales_order.js:1006 +#: templates/js/translated/sales_order.js:1042 msgid "Shipment Reference" -msgstr "" +msgstr "Sendungsreferenz" -#: templates/js/translated/sales_order.js:1030 -#: templates/js/translated/sales_order.js:1529 +#: templates/js/translated/sales_order.js:1066 +#: templates/js/translated/sales_order.js:1565 msgid "Not shipped" -msgstr "" +msgstr "Nicht versandt" -#: templates/js/translated/sales_order.js:1048 +#: templates/js/translated/sales_order.js:1084 msgid "Tracking" -msgstr "" +msgstr "Nachverfolgen" -#: templates/js/translated/sales_order.js:1052 +#: templates/js/translated/sales_order.js:1088 msgid "Invoice" -msgstr "" +msgstr "Rechnung" -#: templates/js/translated/sales_order.js:1219 +#: templates/js/translated/sales_order.js:1255 msgid "Add Shipment" -msgstr "" +msgstr "Lieferung hinzufügen" -#: templates/js/translated/sales_order.js:1270 +#: templates/js/translated/sales_order.js:1306 msgid "Confirm stock allocation" -msgstr "" +msgstr "Bestandszuordnung bestätigen" -#: templates/js/translated/sales_order.js:1271 +#: templates/js/translated/sales_order.js:1307 msgid "Allocate Stock Items to Sales Order" msgstr "Lagerartikel Auftrag zuweisen" -#: templates/js/translated/sales_order.js:1477 +#: templates/js/translated/sales_order.js:1513 msgid "No sales order allocations found" msgstr "Keine Allokationen für Auftrag gefunden" -#: templates/js/translated/sales_order.js:1569 +#: templates/js/translated/sales_order.js:1605 msgid "Edit Stock Allocation" -msgstr "" +msgstr "Bestandszuordnung bearbeiten" -#: templates/js/translated/sales_order.js:1583 +#: templates/js/translated/sales_order.js:1619 msgid "Confirm Delete Operation" -msgstr "" +msgstr "Löschvorgang bestätigen" -#: templates/js/translated/sales_order.js:1584 +#: templates/js/translated/sales_order.js:1620 msgid "Delete Stock Allocation" -msgstr "" +msgstr "Bestandszuordnung löschen" -#: templates/js/translated/sales_order.js:1623 -#: templates/js/translated/sales_order.js:1710 -#: templates/js/translated/stock.js:1773 +#: templates/js/translated/sales_order.js:1659 +#: templates/js/translated/sales_order.js:1746 +#: templates/js/translated/stock.js:1776 msgid "Shipped to customer" -msgstr "" +msgstr "An den Kunden versandt" -#: templates/js/translated/sales_order.js:1631 -#: templates/js/translated/sales_order.js:1719 +#: templates/js/translated/sales_order.js:1667 +#: templates/js/translated/sales_order.js:1755 msgid "Stock location not specified" -msgstr "" +msgstr "Lagerort nicht angegeben" -#: templates/js/translated/sales_order.js:2008 +#: templates/js/translated/sales_order.js:2044 msgid "Allocate serial numbers" -msgstr "" +msgstr "Seriennummern zuweisen" -#: templates/js/translated/sales_order.js:2012 +#: templates/js/translated/sales_order.js:2048 msgid "Purchase stock" -msgstr "" +msgstr "Bestand kaufen" -#: templates/js/translated/sales_order.js:2021 -#: templates/js/translated/sales_order.js:2209 +#: templates/js/translated/sales_order.js:2057 +#: templates/js/translated/sales_order.js:2245 msgid "Calculate price" -msgstr "" +msgstr "Preis berechnen" -#: templates/js/translated/sales_order.js:2035 +#: templates/js/translated/sales_order.js:2071 msgid "Cannot be deleted as items have been shipped" -msgstr "" +msgstr "Kann nicht gelöscht werden, da Artikel versandt wurden" -#: templates/js/translated/sales_order.js:2038 +#: templates/js/translated/sales_order.js:2074 msgid "Cannot be deleted as items have been allocated" -msgstr "" +msgstr "Kann nicht gelöscht werden, da Artikel zugewiesen sind" -#: templates/js/translated/sales_order.js:2109 +#: templates/js/translated/sales_order.js:2145 msgid "Allocate Serial Numbers" -msgstr "" +msgstr "Seriennummern zuweisen" -#: templates/js/translated/sales_order.js:2217 +#: templates/js/translated/sales_order.js:2253 msgid "Update Unit Price" -msgstr "" +msgstr "Stückpreis aktualisieren" #: templates/js/translated/search.js:270 msgid "No results" -msgstr "" +msgstr "Keine Ergebnisse" #: templates/js/translated/search.js:292 templates/search.html:25 msgid "Enter search query" @@ -13125,517 +13224,517 @@ msgstr "Suchbegriff eingeben" #: templates/js/translated/search.js:342 msgid "result" -msgstr "" +msgstr "ergebnis" #: templates/js/translated/search.js:352 msgid "Minimize results" -msgstr "" +msgstr "Ergebnisse minimieren" #: templates/js/translated/search.js:355 msgid "Remove results" -msgstr "" +msgstr "Ergebnisse entfernen" #: templates/js/translated/stock.js:98 msgid "Serialize Stock Item" -msgstr "" +msgstr "Lagerartikel serialisieren" #: templates/js/translated/stock.js:129 msgid "Confirm Stock Serialization" -msgstr "" +msgstr "Lager-Serialisierung bestätigen" #: templates/js/translated/stock.js:139 msgid "Default icon for all locations that have no icon set (optional) - Explore all available icons on" -msgstr "" +msgstr "Standardsymbol für alle Orte, die kein Symbol haben (optional) - Erkunden Sie alle verfügbaren Symbole auf" #: templates/js/translated/stock.js:152 msgid "Parent stock location" -msgstr "" +msgstr "Übergeordneter Lagerort" #: templates/js/translated/stock.js:166 msgid "Add Location type" -msgstr "" +msgstr "Lagerorttyp hinzufügen" #: templates/js/translated/stock.js:202 msgid "Edit Stock Location" -msgstr "" +msgstr "Lagerort bearbeiten" #: templates/js/translated/stock.js:217 msgid "New Stock Location" -msgstr "" +msgstr "Lagerort hinzufügen" #: templates/js/translated/stock.js:219 msgid "Create another location after this one" -msgstr "" +msgstr "Weiteren Lagerort nach diesem erstellen" #: templates/js/translated/stock.js:220 msgid "Stock location created" -msgstr "" +msgstr "Lagerort erstellt" #: templates/js/translated/stock.js:234 msgid "Are you sure you want to delete this stock location?" -msgstr "" +msgstr "Soll dieser Lagerort gelöscht werden?" #: templates/js/translated/stock.js:241 msgid "Move to parent stock location" -msgstr "" +msgstr "Zum übergeordneten Lagerort verschieben" #: templates/js/translated/stock.js:250 msgid "Delete Stock Location" -msgstr "" +msgstr "Lagerort löschen" #: templates/js/translated/stock.js:254 msgid "Action for stock items in this stock location" -msgstr "" +msgstr "Aktion für Lagerartikel in diesem Lagerort" #: templates/js/translated/stock.js:259 msgid "Action for sub-locations" -msgstr "" +msgstr "Aktion für Unter-Lagerorte" #: templates/js/translated/stock.js:313 msgid "This part cannot be serialized" -msgstr "" +msgstr "Dieser Teil kann nicht serialisiert werden" #: templates/js/translated/stock.js:349 msgid "Add given quantity as packs instead of individual items" -msgstr "" +msgstr "Angegebene Menge als Packungen anstatt einzelner Artikel hinzufügen" #: templates/js/translated/stock.js:362 msgid "Enter initial quantity for this stock item" -msgstr "" +msgstr "Ausgangsmenge für diesen Lagerartikel eingeben" #: templates/js/translated/stock.js:368 msgid "Enter serial numbers for new stock (or leave blank)" -msgstr "" +msgstr "Seriennummern für neue Lagerartikel eingeben (oder leer lassen)" #: templates/js/translated/stock.js:439 msgid "Stock item duplicated" -msgstr "" +msgstr "Lagerartikel dupliziert" #: templates/js/translated/stock.js:459 msgid "Duplicate Stock Item" -msgstr "" +msgstr "Lagerartikel duplizieren" #: templates/js/translated/stock.js:475 msgid "Are you sure you want to delete this stock item?" -msgstr "" +msgstr "Soll dieser Lagerartikel gelöscht werden?" #: templates/js/translated/stock.js:480 msgid "Delete Stock Item" -msgstr "" +msgstr "Lagerartikel löschen" #: templates/js/translated/stock.js:501 msgid "Edit Stock Item" -msgstr "" +msgstr "Lagerartikel bearbeiten" #: templates/js/translated/stock.js:543 msgid "Create another item after this one" -msgstr "" +msgstr "Weiteres Teil nach diesem erstellen" #: templates/js/translated/stock.js:555 msgid "Created new stock item" -msgstr "" +msgstr "Neuen Lagerartikel erstellen" #: templates/js/translated/stock.js:568 msgid "Created multiple stock items" -msgstr "" +msgstr "Mehrere Lagerartikel wurden erstellt" #: templates/js/translated/stock.js:593 msgid "Find Serial Number" -msgstr "" +msgstr "Seriennummer finden" #: templates/js/translated/stock.js:597 templates/js/translated/stock.js:598 msgid "Enter serial number" -msgstr "" +msgstr "Seriennummer eingeben" #: templates/js/translated/stock.js:614 msgid "Enter a serial number" -msgstr "" +msgstr "Eine Seriennummer eingeben" #: templates/js/translated/stock.js:634 msgid "No matching serial number" -msgstr "" +msgstr "Keine passende Seriennummer" #: templates/js/translated/stock.js:643 msgid "More than one matching result found" -msgstr "" +msgstr "Mehr als ein übereinstimmendes Ergebnis gefunden" #: templates/js/translated/stock.js:751 msgid "Confirm stock assignment" -msgstr "" +msgstr "Bestand Zuweisung bestätigen" #: templates/js/translated/stock.js:752 msgid "Assign Stock to Customer" -msgstr "" +msgstr "Lagerbestand einem Kunden zuweisen" #: templates/js/translated/stock.js:829 msgid "Warning: Merge operation cannot be reversed" -msgstr "" +msgstr "Achtung: Das Zusammenführen kann nicht rückgängig gemacht werden" #: templates/js/translated/stock.js:830 msgid "Some information will be lost when merging stock items" -msgstr "" +msgstr "Einige Informationen gehen verloren, wenn Artikel zusammengeführt werden" #: templates/js/translated/stock.js:832 msgid "Stock transaction history will be deleted for merged items" -msgstr "" +msgstr "Lagerartikelverlauf wird für zusammengeführte Lagerartikel gelöscht" #: templates/js/translated/stock.js:833 msgid "Supplier part information will be deleted for merged items" -msgstr "" +msgstr "Lieferantenteil-Informationen werden für zusammengeführte Artikel gelöscht" #: templates/js/translated/stock.js:928 msgid "Confirm stock item merge" -msgstr "" +msgstr "Bestandszusammenführung bestätigen" #: templates/js/translated/stock.js:929 msgid "Merge Stock Items" -msgstr "" +msgstr "Lagerartikel zusammenführen" #: templates/js/translated/stock.js:1024 msgid "Transfer Stock" -msgstr "" +msgstr "Bestand verschieben" #: templates/js/translated/stock.js:1025 msgid "Move" -msgstr "" +msgstr "Verschieben" #: templates/js/translated/stock.js:1031 msgid "Count Stock" -msgstr "" +msgstr "Bestand zählen" #: templates/js/translated/stock.js:1032 msgid "Count" -msgstr "" +msgstr "Zählen" #: templates/js/translated/stock.js:1036 msgid "Remove Stock" -msgstr "" +msgstr "Bestand entfernen" #: templates/js/translated/stock.js:1037 msgid "Take" -msgstr "" +msgstr "Entnehmen" #: templates/js/translated/stock.js:1041 msgid "Add Stock" -msgstr "" +msgstr "Bestand hinzufügen" -#: templates/js/translated/stock.js:1042 users/models.py:414 +#: templates/js/translated/stock.js:1042 users/models.py:401 msgid "Add" msgstr "Hinzufügen" #: templates/js/translated/stock.js:1046 msgid "Delete Stock" -msgstr "" +msgstr "Bestand löschen" -#: templates/js/translated/stock.js:1143 +#: templates/js/translated/stock.js:1146 msgid "Quantity cannot be adjusted for serialized stock" -msgstr "" +msgstr "Menge von serialisiertem Bestand kann nicht bearbeitet werden" -#: templates/js/translated/stock.js:1143 +#: templates/js/translated/stock.js:1146 msgid "Specify stock quantity" -msgstr "" +msgstr "Bestandsanzahl angeben" -#: templates/js/translated/stock.js:1177 templates/js/translated/stock.js:3299 +#: templates/js/translated/stock.js:1180 templates/js/translated/stock.js:3299 msgid "Select Stock Items" -msgstr "" +msgstr "Lagerartikel auswählen" -#: templates/js/translated/stock.js:1178 +#: templates/js/translated/stock.js:1181 msgid "Select at least one available stock item" -msgstr "" +msgstr "Wähle mindestens einen verfügbaren Lagerartikel aus" -#: templates/js/translated/stock.js:1224 +#: templates/js/translated/stock.js:1227 msgid "Confirm stock adjustment" -msgstr "" +msgstr "Bestandsanpassung bestätigen" -#: templates/js/translated/stock.js:1360 +#: templates/js/translated/stock.js:1363 msgid "PASS" -msgstr "" +msgstr "ERFOLGREICH" -#: templates/js/translated/stock.js:1362 +#: templates/js/translated/stock.js:1365 msgid "FAIL" -msgstr "" +msgstr "FEHLGESCHLAGEN" -#: templates/js/translated/stock.js:1367 +#: templates/js/translated/stock.js:1370 msgid "NO RESULT" -msgstr "" - -#: templates/js/translated/stock.js:1447 -msgid "Pass test" -msgstr "" +msgstr "KEIN ERGEBNIS" #: templates/js/translated/stock.js:1450 +msgid "Pass test" +msgstr "Test bestanden" + +#: templates/js/translated/stock.js:1453 msgid "Add test result" -msgstr "" +msgstr "Testergebnis hinzufügen" -#: templates/js/translated/stock.js:1473 +#: templates/js/translated/stock.js:1476 msgid "No test results found" -msgstr "" +msgstr "Keine Testergebnisse gefunden" -#: templates/js/translated/stock.js:1537 +#: templates/js/translated/stock.js:1540 msgid "Test Date" -msgstr "" +msgstr "Testdatum" -#: templates/js/translated/stock.js:1550 +#: templates/js/translated/stock.js:1553 msgid "Test started" -msgstr "" +msgstr "Test gestartet" -#: templates/js/translated/stock.js:1559 +#: templates/js/translated/stock.js:1562 msgid "Test finished" -msgstr "" +msgstr "Test beendet" -#: templates/js/translated/stock.js:1713 +#: templates/js/translated/stock.js:1716 msgid "Edit Test Result" -msgstr "" +msgstr "Testergebnis bearbeiten" -#: templates/js/translated/stock.js:1733 +#: templates/js/translated/stock.js:1736 msgid "Delete Test Result" -msgstr "" +msgstr "Testergebnis löschen" -#: templates/js/translated/stock.js:1765 +#: templates/js/translated/stock.js:1768 msgid "In production" -msgstr "" +msgstr "In Produktion" -#: templates/js/translated/stock.js:1769 +#: templates/js/translated/stock.js:1772 msgid "Installed in Stock Item" -msgstr "" +msgstr "In Lagerartikel installiert" -#: templates/js/translated/stock.js:1777 +#: templates/js/translated/stock.js:1780 msgid "Assigned to Sales Order" -msgstr "" +msgstr "Auftrag zugewiesen" -#: templates/js/translated/stock.js:1783 +#: templates/js/translated/stock.js:1786 msgid "No stock location set" -msgstr "" +msgstr "Kein Lagerort gesetzt" -#: templates/js/translated/stock.js:1839 +#: templates/js/translated/stock.js:1842 msgid "Change stock status" -msgstr "" +msgstr "Bestandsstatus ändern" -#: templates/js/translated/stock.js:1848 +#: templates/js/translated/stock.js:1851 msgid "Merge stock" -msgstr "" +msgstr "Bestand zusammenführen" -#: templates/js/translated/stock.js:1897 +#: templates/js/translated/stock.js:1900 msgid "Delete stock" -msgstr "" +msgstr "Bestand löschen" -#: templates/js/translated/stock.js:1952 +#: templates/js/translated/stock.js:1953 msgid "stock items" -msgstr "" +msgstr "Lagerartikel" -#: templates/js/translated/stock.js:1957 +#: templates/js/translated/stock.js:1958 msgid "Scan to location" -msgstr "" +msgstr "Zu Lagerort einscannen" -#: templates/js/translated/stock.js:1968 +#: templates/js/translated/stock.js:1969 msgid "Stock Actions" msgstr "Lager-Aktionen" -#: templates/js/translated/stock.js:2012 +#: templates/js/translated/stock.js:2013 msgid "Load installed items" -msgstr "" +msgstr "Installierte Artikel laden" -#: templates/js/translated/stock.js:2090 +#: templates/js/translated/stock.js:2091 msgid "Stock item is in production" -msgstr "" +msgstr "Lagerartikel wird produziert" -#: templates/js/translated/stock.js:2095 +#: templates/js/translated/stock.js:2096 msgid "Stock item assigned to sales order" -msgstr "" +msgstr "Lagerartikel wurde Auftrag zugewiesen" -#: templates/js/translated/stock.js:2098 +#: templates/js/translated/stock.js:2099 msgid "Stock item assigned to customer" -msgstr "" +msgstr "Lagerartikel wurde Kunden zugewiesen" -#: templates/js/translated/stock.js:2101 +#: templates/js/translated/stock.js:2102 msgid "Serialized stock item has been allocated" -msgstr "" +msgstr "Serialisierter Lagerartikel wurde zugewiesen" -#: templates/js/translated/stock.js:2103 +#: templates/js/translated/stock.js:2104 msgid "Stock item has been fully allocated" -msgstr "" +msgstr "Lagerartikel wurde vollständig zugewiesen" -#: templates/js/translated/stock.js:2105 +#: templates/js/translated/stock.js:2106 msgid "Stock item has been partially allocated" -msgstr "" +msgstr "Lagerartikel wurde teilweise zugewiesen" -#: templates/js/translated/stock.js:2108 +#: templates/js/translated/stock.js:2109 msgid "Stock item has been installed in another item" -msgstr "" +msgstr "Lagerartikel in anderem Artikel verbaut" -#: templates/js/translated/stock.js:2110 +#: templates/js/translated/stock.js:2111 msgid "Stock item has been consumed by a build order" -msgstr "" +msgstr "Lagerbestand wurde durch einen Bauauftrag verbraucht" -#: templates/js/translated/stock.js:2114 +#: templates/js/translated/stock.js:2115 msgid "Stock item has expired" -msgstr "" +msgstr "Lagerartikel ist abgelaufen" -#: templates/js/translated/stock.js:2116 +#: templates/js/translated/stock.js:2117 msgid "Stock item will expire soon" -msgstr "" +msgstr "Lagerartikel läuft demnächst ab" -#: templates/js/translated/stock.js:2121 +#: templates/js/translated/stock.js:2122 msgid "Stock item has been rejected" -msgstr "" +msgstr "Lagerartikel wurde zurückgewiesen" -#: templates/js/translated/stock.js:2123 +#: templates/js/translated/stock.js:2124 msgid "Stock item is lost" -msgstr "" +msgstr "Lagerartikel ist verloren" -#: templates/js/translated/stock.js:2125 +#: templates/js/translated/stock.js:2126 msgid "Stock item is destroyed" -msgstr "" +msgstr "Lagerartikel ist zerstört" -#: templates/js/translated/stock.js:2129 +#: templates/js/translated/stock.js:2130 #: templates/js/translated/table_filters.js:350 msgid "Depleted" -msgstr "" +msgstr "Aufgebraucht" -#: templates/js/translated/stock.js:2294 +#: templates/js/translated/stock.js:2295 msgid "Supplier part not specified" -msgstr "" +msgstr "Zuliefererteil nicht angegeben" -#: templates/js/translated/stock.js:2341 +#: templates/js/translated/stock.js:2342 msgid "Stock Value" -msgstr "" +msgstr "Bestandswert" -#: templates/js/translated/stock.js:2469 +#: templates/js/translated/stock.js:2470 msgid "No stock items matching query" -msgstr "" +msgstr "Keine zur Anfrage passenden Lagerartikel gefunden" #: templates/js/translated/stock.js:2573 msgid "stock locations" -msgstr "" +msgstr "Lagerorte" #: templates/js/translated/stock.js:2728 msgid "Load Sublocations" -msgstr "" +msgstr "Untergeordnete Lagerorte laden" #: templates/js/translated/stock.js:2846 msgid "Details" -msgstr "" +msgstr "Details" #: templates/js/translated/stock.js:2850 msgid "No changes" -msgstr "" +msgstr "Keine Änderungen" #: templates/js/translated/stock.js:2862 msgid "Part information unavailable" -msgstr "" +msgstr "Teileinformationen nicht verfügbar" #: templates/js/translated/stock.js:2884 msgid "Location no longer exists" -msgstr "" +msgstr "Lagerort existiert nicht mehr" #: templates/js/translated/stock.js:2901 msgid "Build order no longer exists" -msgstr "" +msgstr "Bauauftrag existiert nicht mehr" #: templates/js/translated/stock.js:2916 msgid "Purchase order no longer exists" -msgstr "" +msgstr "Bestellung existiert nicht mehr" #: templates/js/translated/stock.js:2933 msgid "Sales Order no longer exists" -msgstr "" +msgstr "Auftrag existiert nicht mehr" #: templates/js/translated/stock.js:2950 msgid "Return Order no longer exists" -msgstr "" +msgstr "Rücksendebestellung existiert nicht mehr" #: templates/js/translated/stock.js:2969 msgid "Customer no longer exists" -msgstr "" +msgstr "Kunde existiert nicht mehr" #: templates/js/translated/stock.js:2987 msgid "Stock item no longer exists" -msgstr "" +msgstr "Lagerartikel existiert nicht mehr" #: templates/js/translated/stock.js:3005 msgid "Added" -msgstr "" +msgstr "Hinzugefügt" #: templates/js/translated/stock.js:3013 msgid "Removed" -msgstr "" +msgstr "Entfernt" #: templates/js/translated/stock.js:3085 msgid "No installed items" -msgstr "" +msgstr "Keine installierten Artikel" #: templates/js/translated/stock.js:3139 templates/js/translated/stock.js:3175 msgid "Uninstall Stock Item" -msgstr "" +msgstr "Lagerartikel deinstallieren" #: templates/js/translated/stock.js:3197 msgid "Select stock item to uninstall" -msgstr "" +msgstr "Zu deinstallierende Lagerartikel auswählen" #: templates/js/translated/stock.js:3218 msgid "Install another stock item into this item" -msgstr "" +msgstr "Einen anderen Lagerartikel in dieses Teil installieren" #: templates/js/translated/stock.js:3219 msgid "Stock items can only be installed if they meet the following criteria" -msgstr "" +msgstr "Lagerartikel können nur installiert werden wenn folgende Kriterien erfüllt werden" #: templates/js/translated/stock.js:3221 msgid "The Stock Item links to a Part which is the BOM for this Stock Item" -msgstr "" +msgstr "Der Lagerartikel ist mit einem Teil verknüpft das in der Stückliste für diesen Lagerartikel ist" #: templates/js/translated/stock.js:3222 msgid "The Stock Item is currently available in stock" -msgstr "" +msgstr "Dieser Lagerartikel ist aktuell vorhanden" #: templates/js/translated/stock.js:3223 msgid "The Stock Item is not already installed in another item" -msgstr "" +msgstr "Der Lagerbestand ist nicht bereits in einem anderen Bestand installiert" #: templates/js/translated/stock.js:3224 msgid "The Stock Item is tracked by either a batch code or serial number" -msgstr "" +msgstr "Der Lagerbestand wird entweder mit einem Batch-Code oder mit Seriennummer verfolgt" #: templates/js/translated/stock.js:3237 msgid "Select part to install" -msgstr "" +msgstr "Teil zur Installation auswählen" #: templates/js/translated/stock.js:3300 msgid "Select one or more stock items" -msgstr "" +msgstr "Wählen Sie einen oder mehrere Bestandteile aus" #: templates/js/translated/stock.js:3313 msgid "Selected stock items" -msgstr "" +msgstr "Lagerartikel auswählen" #: templates/js/translated/stock.js:3317 msgid "Change Stock Status" -msgstr "" +msgstr "Bestandsstatus ändern" #: templates/js/translated/table_filters.js:74 msgid "Has project code" -msgstr "" +msgstr "Hat Projektcode" #: 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 "" +msgstr "Bestellstatus" #: 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 "" +msgstr "Ausstehend" #: 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 "" +msgstr "Mir zugewiesen" #: templates/js/translated/table_filters.js:158 msgid "Trackable Part" @@ -13643,11 +13742,11 @@ msgstr "Nachverfolgbares Teil" #: templates/js/translated/table_filters.js:162 msgid "Assembled Part" -msgstr "" +msgstr "Baugruppe" #: templates/js/translated/table_filters.js:166 msgid "Has Available Stock" -msgstr "" +msgstr "Hat verfügbaren Bestand" #: templates/js/translated/table_filters.js:182 msgid "Allow Variant Stock" @@ -13656,108 +13755,108 @@ msgstr "Erlaube alternatives Lager" #: templates/js/translated/table_filters.js:234 #: templates/js/translated/table_filters.js:345 msgid "Include sublocations" -msgstr "" +msgstr "Unter-Lagerorte einschließen" #: templates/js/translated/table_filters.js:235 msgid "Include locations" -msgstr "" +msgstr "Lagerorte einschließen" #: templates/js/translated/table_filters.js:267 msgid "Has location type" -msgstr "" +msgstr "Hat Lagerorttyp" #: 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 "" +msgstr "Unterkategorien einschließen" #: templates/js/translated/table_filters.js:287 #: templates/js/translated/table_filters.js:759 msgid "Subscribed" -msgstr "" +msgstr "Abonniert" #: templates/js/translated/table_filters.js:298 #: templates/js/translated/table_filters.js:380 msgid "Is Serialized" -msgstr "" +msgstr "Hat Seriennummer" #: templates/js/translated/table_filters.js:301 #: templates/js/translated/table_filters.js:387 msgid "Serial number GTE" -msgstr "" +msgstr "Seriennummer >=" #: templates/js/translated/table_filters.js:302 #: templates/js/translated/table_filters.js:388 msgid "Serial number greater than or equal to" -msgstr "" +msgstr "Seriennummer größer oder gleich" #: templates/js/translated/table_filters.js:305 #: templates/js/translated/table_filters.js:391 msgid "Serial number LTE" -msgstr "" +msgstr "Seriennummer <=" #: templates/js/translated/table_filters.js:306 #: templates/js/translated/table_filters.js:392 msgid "Serial number less than or equal to" -msgstr "" +msgstr "Seriennummern kleiner oder gleich" #: templates/js/translated/table_filters.js:309 #: templates/js/translated/table_filters.js:310 #: templates/js/translated/table_filters.js:383 #: templates/js/translated/table_filters.js:384 msgid "Serial number" -msgstr "" +msgstr "Seriennummer" #: templates/js/translated/table_filters.js:314 #: templates/js/translated/table_filters.js:405 msgid "Batch code" -msgstr "" +msgstr "Losnummer" #: templates/js/translated/table_filters.js:325 #: templates/js/translated/table_filters.js:700 msgid "Active parts" -msgstr "" +msgstr "Aktive Teile" #: templates/js/translated/table_filters.js:326 msgid "Show stock for active parts" -msgstr "" +msgstr "Bestand aktiver Teile anzeigen" #: templates/js/translated/table_filters.js:331 msgid "Part is an assembly" -msgstr "" +msgstr "Teil ist eine Baugruppe" #: templates/js/translated/table_filters.js:335 msgid "Is allocated" -msgstr "" +msgstr "Ist zugeordnet" #: templates/js/translated/table_filters.js:336 msgid "Item has been allocated" -msgstr "" +msgstr "Teil wurde zugeordnet" #: templates/js/translated/table_filters.js:341 msgid "Stock is available for use" -msgstr "" +msgstr "Lagerartikel ist zur Verwendung verfügbar" #: templates/js/translated/table_filters.js:346 msgid "Include stock in sublocations" -msgstr "" +msgstr "Bestand in Unter-Lagerorten einschließen" #: templates/js/translated/table_filters.js:351 msgid "Show stock items which are depleted" -msgstr "" +msgstr "Zeige aufgebrauchte Lagerartikel" #: templates/js/translated/table_filters.js:356 msgid "Show items which are in stock" -msgstr "" +msgstr "Zeige Teile welche im Lager sind" #: templates/js/translated/table_filters.js:361 msgid "Show items which are in production" -msgstr "" +msgstr "Zeige Teile welche in Produktion sind" #: templates/js/translated/table_filters.js:365 msgid "Include Variants" -msgstr "" +msgstr "Varianten einschließen" #: templates/js/translated/table_filters.js:366 msgid "Include stock items for variant parts" @@ -13765,181 +13864,181 @@ 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" -msgstr "" +msgstr "Zeige Bestand, welcher in einem anderen Teil verbaut ist" #: templates/js/translated/table_filters.js:376 msgid "Show items which have been assigned to a customer" -msgstr "" +msgstr "Zeige Bestand, welcher Kunden zugeordnet ist" #: templates/js/translated/table_filters.js:396 #: templates/js/translated/table_filters.js:397 msgid "Stock status" -msgstr "" +msgstr "Bestandsstatus" #: templates/js/translated/table_filters.js:400 msgid "Has batch code" -msgstr "" +msgstr "Hat Batch-Code" #: templates/js/translated/table_filters.js:409 msgid "Stock item is tracked by either batch code or serial number" -msgstr "" +msgstr "Lagerbestand wird entweder per Batch-Code oder Seriennummer verfolgt" #: templates/js/translated/table_filters.js:414 msgid "Has purchase price" -msgstr "" +msgstr "Hat Einkaufspreis" #: templates/js/translated/table_filters.js:415 msgid "Show stock items which have a purchase price set" -msgstr "" +msgstr "Zeige Bestand, für welchen ein Einkaufspreis verfügbar ist" #: templates/js/translated/table_filters.js:419 msgid "Expiry Date before" -msgstr "" +msgstr "Ablaufdatum vor" #: templates/js/translated/table_filters.js:423 msgid "Expiry Date after" -msgstr "" +msgstr "Ablaufdatum nach" #: templates/js/translated/table_filters.js:436 msgid "Show stock items which have expired" -msgstr "" +msgstr "Zeige abgelaufene Lagerartikel" #: templates/js/translated/table_filters.js:442 msgid "Show stock which is close to expiring" -msgstr "" +msgstr "Zeige Bestand, der bald abläuft" #: templates/js/translated/table_filters.js:456 msgid "Test Passed" -msgstr "" +msgstr "Test bestanden" #: templates/js/translated/table_filters.js:460 msgid "Include Installed Items" -msgstr "" +msgstr "Installierte Teile einschließen" #: templates/js/translated/table_filters.js:515 msgid "Build status" -msgstr "" +msgstr "Bauauftrags Status" #: templates/js/translated/table_filters.js:712 msgid "Include parts in subcategories" -msgstr "" +msgstr "Teile in Unterkategorien einschließen" #: templates/js/translated/table_filters.js:717 msgid "Show active parts" -msgstr "" +msgstr "Aktive Teile anzeigen" #: templates/js/translated/table_filters.js:725 msgid "Available stock" -msgstr "" +msgstr "Verfügbarer Lagerbestand" #: templates/js/translated/table_filters.js:733 #: templates/js/translated/table_filters.js:833 msgid "Has Units" -msgstr "" +msgstr "Hat Einheiten" #: templates/js/translated/table_filters.js:734 msgid "Part has defined units" -msgstr "" +msgstr "Teil hat definierte Einheiten" #: templates/js/translated/table_filters.js:738 msgid "Has IPN" -msgstr "" +msgstr "Hat IPN" #: templates/js/translated/table_filters.js:739 msgid "Part has internal part number" -msgstr "" +msgstr "Teil hat Interne Teilenummer" #: templates/js/translated/table_filters.js:743 msgid "In stock" -msgstr "" +msgstr "Auf Lager" #: templates/js/translated/table_filters.js:751 msgid "Purchasable" -msgstr "" +msgstr "Kaufbar" #: templates/js/translated/table_filters.js:763 msgid "Has stocktake entries" -msgstr "" +msgstr "Hat Inventureinträge" #: templates/js/translated/table_filters.js:829 msgid "Has Choices" -msgstr "" +msgstr "Hat Auswahlen" #: templates/js/translated/tables.js:92 msgid "Display calendar view" -msgstr "" +msgstr "Kalenderansicht anzeigen" #: templates/js/translated/tables.js:102 msgid "Display list view" -msgstr "" +msgstr "Listenansicht anzeigen" #: templates/js/translated/tables.js:112 msgid "Display tree view" -msgstr "" +msgstr "Baumansicht anzeigen" #: templates/js/translated/tables.js:130 msgid "Expand all rows" -msgstr "" +msgstr "Alle Zeilen ausklappen" #: templates/js/translated/tables.js:136 msgid "Collapse all rows" -msgstr "" +msgstr "Alle Zeilen einklappen" #: templates/js/translated/tables.js:186 msgid "Export Table Data" -msgstr "" +msgstr "Tabellendaten exportieren" #: templates/js/translated/tables.js:190 msgid "Select File Format" -msgstr "" +msgstr "Dateiformat wählen" #: templates/js/translated/tables.js:529 msgid "Loading data" -msgstr "" +msgstr "Lade Daten" #: templates/js/translated/tables.js:532 msgid "rows per page" -msgstr "" +msgstr "Zeilen pro Seite" #: templates/js/translated/tables.js:537 msgid "Showing all rows" -msgstr "" +msgstr "Alle Zeilen anzeigen" #: templates/js/translated/tables.js:539 msgid "Showing" -msgstr "" +msgstr "Zeige" #: templates/js/translated/tables.js:539 msgid "to" -msgstr "" +msgstr "bis" #: templates/js/translated/tables.js:539 msgid "of" -msgstr "" +msgstr "von" #: templates/js/translated/tables.js:539 msgid "rows" -msgstr "" +msgstr "Zeilen" #: templates/js/translated/tables.js:546 msgid "No matching results" -msgstr "" +msgstr "Keine passenden Ergebnisse gefunden" #: templates/js/translated/tables.js:549 msgid "Hide/Show pagination" -msgstr "" +msgstr "Seitennavigation verstecken/anzeigen" #: templates/js/translated/tables.js:555 msgid "Toggle" -msgstr "" +msgstr "Umschalten" #: templates/js/translated/tables.js:558 msgid "Columns" -msgstr "" +msgstr "Spalten" #: templates/js/translated/tables.js:561 msgid "All" -msgstr "" +msgstr "Alle" #: templates/navbar.html:45 msgid "Buy" @@ -13959,7 +14058,7 @@ msgstr "Neue Benachrichtigungen" #: templates/navbar.html:144 users/models.py:201 msgid "Admin" -msgstr "" +msgstr "Admin" #: templates/navbar.html:148 msgid "Logout" @@ -13973,6 +14072,22 @@ msgstr "Speichern" msgid "Show all notifications and history" msgstr "Zeige alle Benachrichtigungen und Verlauf" +#: templates/pui_banner.html:9 +msgid "Platform UI - the new UI for InvenTree - provides more modern administration options." +msgstr "Plattform UI - die neue Oberfläche für InvenTree - bietet modernere Administrationsmöglichkeiten." + +#: templates/pui_banner.html:12 +msgid "Platform UI - the new UI for InvenTree - is ready to be tested." +msgstr "Plattform UI - die neue Benutzeroberfläche für InvenTree - ist bereit um getestet zu werden." + +#: templates/pui_banner.html:15 +msgid "Try it out now" +msgstr "Jetzt ausprobieren" + +#: templates/pui_banner.html:15 +msgid "here" +msgstr "hier" + #: templates/qr_code.html:11 msgid "QR data not provided" msgstr "QR Daten nicht angegeben" @@ -14039,28 +14154,28 @@ msgstr "Weiter" #: templates/socialaccount/login.html:29 msgid "Invalid SSO Provider" -msgstr "" +msgstr "Ungültiger SSO-Anbieter" #: templates/socialaccount/login.html:31 msgid "The selected SSO provider is invalid, or has not been correctly configured" -msgstr "" +msgstr "Der ausgewählte SSO-Anbieter ist ungültig oder wurde nicht korrekt konfiguriert" #: 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 "" +msgstr "Sie sind dabei, Ihr %(provider_name)s Konto zu verwenden, um sich bei %(site_name)s anzumelden." #: templates/socialaccount/signup.html:13 msgid "As a final step, please complete the following form" -msgstr "" +msgstr "Bitte füllen Sie zum Abschluss folgendes Formular aus" #: templates/socialaccount/snippets/provider_list.html:26 msgid "Provider has not been configured" -msgstr "" +msgstr "Anbieter wurde nicht konfiguriert" #: templates/socialaccount/snippets/provider_list.html:35 msgid "No SSO providers have been configured" -msgstr "" +msgstr "Es wurden keine SSO-Anbieter konfiguriert" #: templates/stats.html:13 msgid "Instance Name" @@ -14140,7 +14255,7 @@ msgstr "Welche Benutzer gehören zu dieser Gruppe" #: users/admin.py:249 msgid "The following users are members of multiple groups" -msgstr "" +msgstr "Folgende Benutzer gehören zu mehreren Gruppen" #: users/admin.py:283 msgid "Personal info" @@ -14156,19 +14271,19 @@ msgstr "wichtige Daten" #: users/authentication.py:29 users/models.py:138 msgid "Token has been revoked" -msgstr "" +msgstr "Token wurde widerrufen" #: users/authentication.py:32 msgid "Token has expired" -msgstr "" +msgstr "Token ist abgelaufen" #: users/models.py:81 msgid "API Token" -msgstr "" +msgstr "API Token" #: users/models.py:82 msgid "API Tokens" -msgstr "" +msgstr "API-Tokens" #: users/models.py:118 msgid "Token Name" @@ -14180,49 +14295,48 @@ msgstr "Benutzerdefinierter Tokenname" #: users/models.py:125 msgid "Token expiry date" -msgstr "" +msgstr "Token Ablaufdatum" #: users/models.py:133 msgid "Last Seen" -msgstr "" +msgstr "Zuletzt gesehen" #: users/models.py:134 msgid "Last time the token was used" -msgstr "" +msgstr "Das letzte Mal, wo das Token verwendet wurde" #: users/models.py:138 msgid "Revoked" -msgstr "" +msgstr "Widerrufen" -#: users/models.py:397 +#: users/models.py:384 msgid "Permission set" msgstr "Berechtigung geändert" -#: users/models.py:406 +#: users/models.py:393 msgid "Group" msgstr "Gruppe" -#: users/models.py:410 +#: users/models.py:397 msgid "View" msgstr "Ansicht" -#: users/models.py:410 +#: users/models.py:397 msgid "Permission to view items" msgstr "Berechtigung Einträge anzuzeigen" -#: users/models.py:414 +#: users/models.py:401 msgid "Permission to add items" msgstr "Berechtigung Einträge zu erstellen" -#: users/models.py:418 +#: users/models.py:405 msgid "Change" msgstr "Ändern" -#: users/models.py:420 +#: users/models.py:407 msgid "Permissions to edit items" msgstr "Berechtigungen Einträge zu ändern" -#: users/models.py:426 +#: users/models.py:413 msgid "Permission to delete items" msgstr "Berechtigung Einträge zu löschen" - diff --git a/src/backend/InvenTree/locale/el/LC_MESSAGES/django.po b/src/backend/InvenTree/locale/el/LC_MESSAGES/django.po index bd12cb701e..59c26e1611 100644 --- a/src/backend/InvenTree/locale/el/LC_MESSAGES/django.po +++ b/src/backend/InvenTree/locale/el/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-04-20 13:19+0000\n" -"PO-Revision-Date: 2024-04-21 04:19\n" +"POT-Creation-Date: 2024-05-31 07:08+0000\n" +"PO-Revision-Date: 2024-05-27 11:54\n" "Last-Translator: \n" "Language-Team: Greek\n" "Language: el_GR\n" @@ -17,11 +17,11 @@ msgstr "" "X-Crowdin-File: /[inventree.InvenTree] l10/src/backend/InvenTree/locale/en/LC_MESSAGES/django.po\n" "X-Crowdin-File-ID: 216\n" -#: InvenTree/api.py:255 +#: InvenTree/api.py:272 msgid "API endpoint not found" msgstr "Το API endpoint δε βρέθηκε" -#: InvenTree/api.py:519 +#: InvenTree/api.py:536 msgid "User does not have permission to view this model" msgstr "Δεν έχετε δικαιώματα να το δείτε αυτό" @@ -56,26 +56,26 @@ msgstr "Μπορείτε να βρείτε λεπτομέρειες σφάλμα msgid "Enter date" msgstr "Εισάγετε ημερομηνία" -#: InvenTree/fields.py:208 InvenTree/models.py:1021 build/serializers.py:438 -#: build/serializers.py:516 build/templates/build/sidebar.html:21 -#: company/models.py:847 company/templates/company/sidebar.html:37 -#: order/models.py:1283 order/templates/order/po_sidebar.html:11 +#: InvenTree/fields.py:208 InvenTree/models.py:1035 build/serializers.py:453 +#: build/serializers.py:531 build/templates/build/sidebar.html:21 +#: company/models.py:849 company/templates/company/sidebar.html:37 +#: order/models.py:1332 order/templates/order/po_sidebar.html:11 #: order/templates/order/return_order_sidebar.html:9 #: order/templates/order/so_sidebar.html:17 part/admin.py:59 -#: part/models.py:3175 part/templates/part/part_sidebar.html:63 -#: report/templates/report/inventree_build_order_base.html:172 -#: stock/admin.py:226 stock/models.py:2332 stock/models.py:2449 -#: 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 +#: part/models.py:3218 part/templates/part/part_sidebar.html:63 +#: report/templates/report/inventree_build_order_report.html:172 +#: stock/admin.py:226 stock/models.py:2325 stock/models.py:2442 +#: stock/serializers.py:630 stock/serializers.py:788 stock/serializers.py:884 +#: stock/serializers.py:934 stock/serializers.py:1243 stock/serializers.py:1332 +#: stock/serializers.py:1497 stock/templates/stock/stock_sidebar.html:25 #: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1265 #: templates/js/translated/company.js:1684 templates/js/translated/order.js:347 #: templates/js/translated/part.js:1080 -#: templates/js/translated/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 +#: templates/js/translated/purchase_order.js:2200 +#: templates/js/translated/return_order.js:775 +#: templates/js/translated/sales_order.js:1103 +#: templates/js/translated/sales_order.js:2018 +#: templates/js/translated/stock.js:1536 templates/js/translated/stock.js:2428 msgid "Notes" msgstr "Σημειώσεις" @@ -132,7 +132,7 @@ msgstr "Ο παρεχόμενος τομέας ηλεκτρονικού ταχυ msgid "Registration is disabled." msgstr "Η εγγραφή είναι απενεργοποιημένη." -#: InvenTree/helpers.py:525 order/models.py:541 order/models.py:743 +#: InvenTree/helpers.py:525 order/models.py:562 order/models.py:764 msgid "Invalid quantity provided" msgstr "Μη έγκυρη ποσότητα" @@ -324,14 +324,18 @@ msgid "Turkish" msgstr "Τούρκικα" #: InvenTree/locales.py:48 +msgid "Ukrainian" +msgstr "" + +#: InvenTree/locales.py:49 msgid "Vietnamese" msgstr "Βιετναμέζικα" -#: InvenTree/locales.py:49 +#: InvenTree/locales.py:50 msgid "Chinese (Simplified)" msgstr "Κινέζικα (απλοποιημένα)" -#: InvenTree/locales.py:50 +#: InvenTree/locales.py:51 msgid "Chinese (Traditional)" msgstr "Κινέζικα (Παραδοσιακά)" @@ -351,145 +355,145 @@ msgstr "" msgid "Error running plugin validation" msgstr "Σφάλμα κατά την εκτέλεση επικύρωσης προσθέτου" -#: InvenTree/models.py:162 +#: InvenTree/models.py:176 msgid "Metadata must be a python dict object" msgstr "Τα μεταδεδομένα πρέπει να είναι ένα αντικείμενο dict python" -#: InvenTree/models.py:168 +#: InvenTree/models.py:182 msgid "Plugin Metadata" msgstr "Μεταδεδομένα Πρόσθετου" -#: InvenTree/models.py:169 +#: InvenTree/models.py:183 msgid "JSON metadata field, for use by external plugins" msgstr "JSON πεδίο μεταδεδομένων, για χρήση από εξωτερικά πρόσθετα" -#: InvenTree/models.py:399 +#: InvenTree/models.py:413 msgid "Improperly formatted pattern" msgstr "Λανθασμένο μοτίβο" -#: InvenTree/models.py:406 +#: InvenTree/models.py:420 msgid "Unknown format key specified" msgstr "Δώσατε λάθος μορφή κλειδιού" -#: InvenTree/models.py:412 +#: InvenTree/models.py:426 msgid "Missing required format key" msgstr "Λείπει το απαραίτητο κλειδί" -#: InvenTree/models.py:423 +#: InvenTree/models.py:437 msgid "Reference field cannot be empty" msgstr "Το πεδίο δεν μπορεί να είναι άδειο" -#: InvenTree/models.py:431 +#: InvenTree/models.py:445 msgid "Reference must match required pattern" msgstr "Η αναφορά πρέπει να ταιριάζει με το απαιτούμενο μοτίβο" -#: InvenTree/models.py:462 +#: InvenTree/models.py:476 msgid "Reference number is too large" msgstr "Ο αριθμός αναφοράς είναι πολύ μεγάλος" -#: InvenTree/models.py:536 +#: InvenTree/models.py:550 msgid "Missing file" msgstr "Το αρχείο λείπει" -#: InvenTree/models.py:537 +#: InvenTree/models.py:551 msgid "Missing external link" msgstr "Λείπει ο εξωτερικός σύνδεσμος" -#: InvenTree/models.py:558 stock/models.py:2444 +#: InvenTree/models.py:572 stock/models.py:2437 #: templates/js/translated/attachment.js:119 #: templates/js/translated/attachment.js:326 msgid "Attachment" msgstr "Συνημμένο" -#: InvenTree/models.py:559 +#: InvenTree/models.py:573 msgid "Select file to attach" msgstr "Επιλέξτε αρχείο για επισύναψη" -#: InvenTree/models.py:567 common/models.py:3018 company/models.py:146 -#: company/models.py:457 company/models.py:514 company/models.py:830 -#: order/models.py:291 order/models.py:1288 order/models.py:1702 -#: part/admin.py:55 part/models.py:919 +#: InvenTree/models.py:581 common/models.py:3041 company/models.py:146 +#: company/models.py:457 company/models.py:514 company/models.py:831 +#: order/models.py:303 order/models.py:1337 order/models.py:1753 +#: part/admin.py:55 part/models.py:962 #: part/templates/part/part_scheduling.html:11 -#: report/templates/report/inventree_build_order_base.html:164 +#: report/templates/report/inventree_build_order_report.html:164 #: stock/admin.py:225 templates/js/translated/company.js:1319 #: templates/js/translated/company.js:1673 templates/js/translated/order.js:351 -#: templates/js/translated/part.js: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 +#: templates/js/translated/part.js:2455 +#: templates/js/translated/purchase_order.js:2040 +#: templates/js/translated/purchase_order.js:2204 +#: templates/js/translated/return_order.js:779 +#: templates/js/translated/sales_order.js:1092 +#: templates/js/translated/sales_order.js:2023 msgid "Link" msgstr "Σύνδεσμος" -#: InvenTree/models.py:568 build/models.py:315 part/models.py:920 -#: stock/models.py:819 +#: InvenTree/models.py:582 build/models.py:345 part/models.py:963 +#: stock/models.py:836 msgid "Link to external URL" msgstr "Σύνδεσμος προς εξωτερική διεύθυνση URL" -#: InvenTree/models.py:574 templates/js/translated/attachment.js:120 +#: InvenTree/models.py:588 templates/js/translated/attachment.js:120 #: templates/js/translated/attachment.js:341 msgid "Comment" msgstr "Σχόλιο" -#: InvenTree/models.py:575 +#: InvenTree/models.py:589 msgid "File comment" msgstr "Σχόλιο αρχείου" -#: InvenTree/models.py:583 InvenTree/models.py:584 common/models.py:2494 -#: common/models.py:2495 common/models.py:2719 common/models.py:2720 -#: common/models.py:2965 common/models.py:2966 part/models.py:3185 -#: part/models.py:3272 part/models.py:3365 part/models.py:3393 -#: plugin/models.py:250 plugin/models.py:251 -#: report/templates/report/inventree_test_report_base.html:105 +#: InvenTree/models.py:597 InvenTree/models.py:598 common/models.py:2517 +#: common/models.py:2518 common/models.py:2742 common/models.py:2743 +#: common/models.py:2988 common/models.py:2989 part/models.py:3228 +#: part/models.py:3315 part/models.py:3408 part/models.py:3436 +#: plugin/models.py:259 plugin/models.py:260 +#: report/templates/report/inventree_test_report.html:105 #: templates/js/translated/stock.js:3036 users/models.py:111 msgid "User" msgstr "Χρήστης" -#: InvenTree/models.py:588 +#: InvenTree/models.py:602 msgid "upload date" msgstr "ημερομηνία φόρτωσης" -#: InvenTree/models.py:610 +#: InvenTree/models.py:624 msgid "Filename must not be empty" msgstr "Το όνομα αρχείου δεν μπορεί να είναι κενό" -#: InvenTree/models.py:621 +#: InvenTree/models.py:635 msgid "Invalid attachment directory" msgstr "Μη διαθέσιμη τοποθεσία συνημμένου" -#: InvenTree/models.py:651 +#: InvenTree/models.py:665 #, python-brace-format msgid "Filename contains illegal character '{c}'" msgstr "Το όνομα αρχείου περιέχει μη έγκυρους χαρακτήρες '{c}'" -#: InvenTree/models.py:654 +#: InvenTree/models.py:668 msgid "Filename missing extension" msgstr "Λείπει επέκταση ονόματος αρχείου" -#: InvenTree/models.py:663 +#: InvenTree/models.py:677 msgid "Attachment with this filename already exists" msgstr "Αρχείο με αυτό το όνομα υπάρχει ήδη" -#: InvenTree/models.py:670 +#: InvenTree/models.py:684 msgid "Error renaming file" msgstr "Σφάλμα κατά τη μετονομασία" -#: InvenTree/models.py:846 +#: InvenTree/models.py:860 msgid "Duplicate names cannot exist under the same parent" msgstr "Διπλότυπα ονόματα δεν μπορούν να υπάρχουν στον ίδιο γονέα" -#: InvenTree/models.py:863 +#: InvenTree/models.py:877 msgid "Invalid choice" msgstr "Μη έγκυρη επιλογή" -#: InvenTree/models.py:893 common/models.py:2706 common/models.py:3104 -#: common/serializers.py:370 company/models.py:613 label/models.py:120 -#: machine/models.py:24 part/models.py:855 part/models.py:3616 -#: plugin/models.py:41 report/models.py:176 stock/models.py:76 +#: InvenTree/models.py:907 common/models.py:2729 common/models.py:3127 +#: common/serializers.py:403 company/models.py:614 machine/models.py:24 +#: part/models.py:898 part/models.py:3659 plugin/models.py:50 +#: report/models.py:149 stock/models.py:72 #: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/notifications.html:17 -#: templates/InvenTree/settings/plugin.html:81 +#: templates/InvenTree/settings/plugin.html:83 #: templates/InvenTree/settings/plugin_settings.html:22 #: templates/InvenTree/settings/settings_staff_js.html:67 #: templates/InvenTree/settings/settings_staff_js.html:446 @@ -499,98 +503,98 @@ msgstr "Μη έγκυρη επιλογή" #: templates/js/translated/company.js:1165 #: templates/js/translated/company.js:1413 templates/js/translated/part.js:1186 #: templates/js/translated/part.js:1474 templates/js/translated/part.js:1610 -#: templates/js/translated/part.js:2749 templates/js/translated/stock.js:2716 +#: templates/js/translated/part.js:2748 templates/js/translated/stock.js:2716 msgid "Name" msgstr "Όνομα" -#: InvenTree/models.py:899 build/models.py:188 +#: InvenTree/models.py:913 build/models.py:218 #: build/templates/build/detail.html:24 common/models.py:136 -#: company/models.py:522 company/models.py:838 +#: company/models.py:523 company/models.py:840 #: company/templates/company/company_base.html:77 #: company/templates/company/manufacturer_part.html:75 -#: company/templates/company/supplier_part.html:107 label/models.py:127 -#: order/models.py:277 order/models.py:1316 part/admin.py:303 part/admin.py:414 -#: part/models.py:878 part/models.py:3631 part/templates/part/category.html:82 +#: company/templates/company/supplier_part.html:107 order/models.py:289 +#: order/models.py:1365 part/admin.py:305 part/admin.py:416 part/models.py:921 +#: part/models.py:3674 part/templates/part/category.html:82 #: part/templates/part/part_base.html:170 -#: part/templates/part/part_scheduling.html:12 report/models.py:189 -#: report/models.py:655 report/models.py:729 -#: report/templates/report/inventree_build_order_base.html:117 -#: stock/admin.py:55 stock/models.py:82 stock/templates/stock/location.html:125 +#: part/templates/part/part_scheduling.html:12 report/models.py:155 +#: report/models.py:509 report/models.py:535 +#: report/templates/report/inventree_build_order_report.html:117 +#: stock/admin.py:55 stock/models.py:78 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:519 +#: templates/js/translated/build.js:2139 templates/js/translated/company.js:519 #: templates/js/translated/company.js:1330 #: templates/js/translated/company.js:1641 templates/js/translated/index.js:119 #: templates/js/translated/order.js:298 templates/js/translated/part.js:1238 #: templates/js/translated/part.js:1483 templates/js/translated/part.js:1621 -#: templates/js/translated/part.js:1958 templates/js/translated/part.js:2355 -#: templates/js/translated/part.js:2785 templates/js/translated/part.js:2896 +#: templates/js/translated/part.js:1958 templates/js/translated/part.js:2354 +#: templates/js/translated/part.js:2784 templates/js/translated/part.js:2895 #: templates/js/translated/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/purchase_order.js:1706 +#: templates/js/translated/purchase_order.js:1849 +#: templates/js/translated/purchase_order.js:2022 +#: templates/js/translated/return_order.js:313 +#: templates/js/translated/sales_order.js:838 +#: templates/js/translated/sales_order.js:1848 +#: templates/js/translated/stock.js:1515 templates/js/translated/stock.js:2058 #: templates/js/translated/stock.js:2748 templates/js/translated/stock.js:2831 msgid "Description" msgstr "Περιγραφή" -#: InvenTree/models.py:900 stock/models.py:83 +#: InvenTree/models.py:914 stock/models.py:79 msgid "Description (optional)" msgstr "Περιγραφή (προαιρετική)" -#: InvenTree/models.py:909 +#: InvenTree/models.py:923 msgid "parent" msgstr "γονέας" -#: InvenTree/models.py:915 templates/js/translated/part.js:2794 +#: InvenTree/models.py:929 templates/js/translated/part.js:2793 #: templates/js/translated/stock.js:2757 msgid "Path" msgstr "Μονοπάτι" -#: InvenTree/models.py:1021 +#: InvenTree/models.py:1035 msgid "Markdown notes (optional)" msgstr "Σημειώσεις Markdown (προαιρετικό)" -#: InvenTree/models.py:1050 +#: InvenTree/models.py:1064 msgid "Barcode Data" msgstr "Στοιχεία Barcode" -#: InvenTree/models.py:1051 +#: InvenTree/models.py:1065 msgid "Third party barcode data" msgstr "Δεδομένα barcode τρίτων" -#: InvenTree/models.py:1057 +#: InvenTree/models.py:1071 msgid "Barcode Hash" msgstr "" -#: InvenTree/models.py:1058 +#: InvenTree/models.py:1072 msgid "Unique hash of barcode data" msgstr "Μοναδικό hash δεδομένων barcode" -#: InvenTree/models.py:1111 +#: InvenTree/models.py:1125 msgid "Existing barcode found" msgstr "Βρέθηκε υπάρχων barcode" -#: InvenTree/models.py:1154 +#: InvenTree/models.py:1168 msgid "Server Error" msgstr "Σφάλμα διακομιστή" -#: InvenTree/models.py:1155 +#: InvenTree/models.py:1169 msgid "An error has been logged by the server." msgstr "Ένα σφάλμα έχει καταγραφεί από το διακομιστή." -#: InvenTree/serializers.py:62 part/models.py:4169 +#: InvenTree/serializers.py:62 part/models.py:4212 msgid "Must be a valid number" msgstr "Πρέπει να είναι αριθμός" #: InvenTree/serializers.py:99 company/models.py:183 -#: company/templates/company/company_base.html:112 part/models.py:2993 +#: company/templates/company/company_base.html:112 part/models.py:3036 #: templates/InvenTree/settings/settings_staff_js.html:44 #: templates/currency_data.html:5 msgid "Currency" @@ -682,7 +686,7 @@ msgstr "Διεύθυνση URL του αρχείου απομακρυσμένη msgid "Downloading images from remote URL is not enabled" msgstr "Η λήψη εικόνων από απομακρυσμένο URL δεν είναι ενεργοποιημένη" -#: InvenTree/status.py:66 part/serializers.py:1161 +#: InvenTree/status.py:66 part/serializers.py:1178 msgid "Background worker check failed" msgstr "Ο έλεγχος εργασίας στο παρασκήνιο απέτυχε" @@ -694,202 +698,6 @@ msgstr "Δεν έχει ρυθμιστεί διεύθυνση ηλεκτρονι msgid "InvenTree system health checks failed" msgstr "Ο έλεγχος συστήματος για το Inventree απέτυχε" -#: 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:1564 -#: 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 "Άγνωστη βάση δεδομένων" @@ -938,45 +746,45 @@ msgstr "Πληροφορίες συστήματος" msgid "About InvenTree" msgstr "Σχετικά με το InvenTree" -#: build/api.py:238 +#: build/api.py:255 msgid "Build must be cancelled before it can be deleted" msgstr "Η έκδοση πρέπει να ακυρωθεί πριν διαγραφεί" -#: build/api.py:282 part/models.py:4047 templates/js/translated/bom.js:997 -#: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2521 +#: build/api.py:299 part/models.py:4090 templates/js/translated/bom.js:997 +#: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2520 #: templates/js/translated/table_filters.js:190 #: templates/js/translated/table_filters.js:583 msgid "Consumable" msgstr "Αναλώσιμο" -#: build/api.py:283 part/models.py:4041 part/templates/part/upload_bom.html:58 +#: build/api.py:300 part/models.py:4084 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/build.js:2529 #: templates/js/translated/table_filters.js:186 #: templates/js/translated/table_filters.js:215 #: templates/js/translated/table_filters.js:587 msgid "Optional" msgstr "Προαιρετικό" -#: build/api.py:284 templates/js/translated/table_filters.js:408 +#: build/api.py:301 templates/js/translated/table_filters.js:408 #: templates/js/translated/table_filters.js:579 msgid "Tracked" msgstr "Υπό παρακολούθηση" -#: build/api.py:286 part/admin.py:144 templates/js/translated/build.js:1741 -#: templates/js/translated/build.js:2630 -#: templates/js/translated/sales_order.js:1929 +#: build/api.py:303 part/admin.py:144 templates/js/translated/build.js:1744 +#: templates/js/translated/build.js:2629 +#: templates/js/translated/sales_order.js:1965 #: templates/js/translated/table_filters.js:571 msgid "Allocated" msgstr "Κατανεμημένο" -#: build/api.py:294 company/models.py:902 company/serializers.py:383 +#: build/api.py:311 company/models.py:904 company/serializers.py:383 #: 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/bom.js:1162 templates/js/translated/build.js:2561 #: templates/js/translated/index.js:123 -#: templates/js/translated/model_renderers.js:228 +#: templates/js/translated/model_renderers.js:234 #: templates/js/translated/part.js:692 templates/js/translated/part.js:694 #: templates/js/translated/part.js:699 #: templates/js/translated/table_filters.js:340 @@ -984,16 +792,16 @@ msgstr "Κατανεμημένο" msgid "Available" msgstr "Διαθέσιμο" -#: build/models.py:74 build/templates/build/build_base.html:9 +#: build/models.py:83 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 +#: report/templates/report/inventree_build_order_report.html:105 +#: stock/serializers.py:83 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/models.py:84 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 @@ -1004,708 +812,751 @@ msgstr "Σειρά Κατασκευής" msgid "Build Orders" msgstr "Δημιουργία Παραγγελιών" -#: build/models.py:116 +#: build/models.py:131 msgid "Invalid choice for parent build" msgstr "Μη έγκυρη επιλογή για γονική κατασκευή" -#: build/models.py:127 order/models.py:239 +#: build/models.py:142 order/models.py:240 msgid "Responsible user or group must be specified" msgstr "" -#: build/models.py:133 +#: build/models.py:148 msgid "Build order part cannot be changed" msgstr "Εξάρτημα από εντολή κατασκευής δεν μπορεί να αλλάξει" -#: build/models.py:179 +#: build/models.py:209 msgid "Build Order Reference" msgstr "Αναφορά Παραγγελίας Κατασκευής" -#: build/models.py:180 order/models.py:442 order/models.py:898 -#: order/models.py:1276 order/models.py:1996 part/admin.py:417 -#: part/models.py:4062 part/templates/part/upload_bom.html:54 +#: build/models.py:210 order/models.py:463 order/models.py:928 +#: order/models.py:1325 order/models.py:2056 part/admin.py:419 +#: part/models.py:4105 part/templates/part/upload_bom.html:54 #: 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 +#: report/templates/report/inventree_purchase_order_report.html:28 +#: report/templates/report/inventree_return_order_report.html:26 +#: report/templates/report/inventree_sales_order_report.html:28 #: templates/js/translated/bom.js:770 templates/js/translated/bom.js:973 -#: templates/js/translated/build.js:2513 templates/js/translated/order.js:291 +#: templates/js/translated/build.js:2512 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 +#: templates/js/translated/purchase_order.js:2065 +#: templates/js/translated/return_order.js:728 +#: templates/js/translated/sales_order.js:1854 msgid "Reference" msgstr "Αναφορά" -#: build/models.py:191 +#: build/models.py:221 msgid "Brief description of the build (optional)" msgstr "Σύντομη περιγραφή της κατασκευής (προαιρετικό)" -#: build/models.py:199 build/templates/build/build_base.html:183 +#: build/models.py:229 build/templates/build/build_base.html:183 #: build/templates/build/detail.html:87 msgid "Parent Build" msgstr "Γονική Κατασκευή" -#: build/models.py:200 +#: build/models.py:230 msgid "BuildOrder to which this build is allocated" msgstr "BuildOrder στην οποία έχει δοθεί αυτή η κατασκευή" -#: build/models.py:205 build/templates/build/build_base.html:97 -#: build/templates/build/detail.html:29 company/models.py:1056 order/api.py:817 -#: order/models.py:1401 order/models.py:1544 order/models.py:1545 -#: part/api.py:1547 part/api.py:1841 part/models.py:390 part/models.py:3004 -#: part/models.py:3148 part/models.py:3292 part/models.py:3315 -#: part/models.py:3336 part/models.py:3358 part/models.py:3468 -#: part/models.py:3764 part/models.py:3920 part/models.py:4013 -#: part/models.py:4374 part/serializers.py:1107 part/serializers.py:1713 +#: build/models.py:235 build/templates/build/build_base.html:97 +#: build/templates/build/detail.html:29 company/models.py:1058 order/api.py:821 +#: order/models.py:1450 order/models.py:1595 order/models.py:1596 +#: part/api.py:1501 part/api.py:1795 part/models.py:392 part/models.py:3047 +#: part/models.py:3191 part/models.py:3335 part/models.py:3358 +#: part/models.py:3379 part/models.py:3401 part/models.py:3511 +#: part/models.py:3807 part/models.py:3963 part/models.py:4056 +#: part/models.py:4417 part/serializers.py:1124 part/serializers.py:1730 #: 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 +#: report/templates/report/inventree_build_order_report.html:109 +#: report/templates/report/inventree_purchase_order_report.html:27 +#: report/templates/report/inventree_return_order_report.html:24 +#: report/templates/report/inventree_sales_order_report.html:27 +#: report/templates/report/inventree_stock_location_report.html:102 +#: stock/serializers.py:110 stock/serializers.py:158 stock/serializers.py:396 +#: stock/serializers.py:818 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/build.js:1312 templates/js/translated/build.js:1743 +#: templates/js/translated/build.js:2162 templates/js/translated/build.js:2335 #: templates/js/translated/company.js:348 #: templates/js/translated/company.js:1116 #: templates/js/translated/company.js:1271 #: templates/js/translated/company.js:1559 templates/js/translated/index.js:109 #: templates/js/translated/part.js:1943 templates/js/translated/part.js:2015 -#: templates/js/translated/part.js:2324 templates/js/translated/pricing.js:369 +#: templates/js/translated/part.js:2323 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/purchase_order.js:1848 +#: templates/js/translated/purchase_order.js:2007 +#: templates/js/translated/return_order.js:538 +#: templates/js/translated/return_order.js:709 #: templates/js/translated/sales_order.js:300 -#: templates/js/translated/sales_order.js:1197 -#: templates/js/translated/sales_order.js:1598 -#: templates/js/translated/sales_order.js:1796 +#: templates/js/translated/sales_order.js:1233 +#: templates/js/translated/sales_order.js:1634 +#: templates/js/translated/sales_order.js:1832 #: templates/js/translated/stock.js:676 templates/js/translated/stock.js:842 -#: templates/js/translated/stock.js:1058 templates/js/translated/stock.js:1996 +#: templates/js/translated/stock.js:1058 templates/js/translated/stock.js:1997 #: templates/js/translated/stock.js:2857 templates/js/translated/stock.js:3090 #: templates/js/translated/stock.js:3236 msgid "Part" msgstr "Εξάρτημα" -#: build/models.py:213 +#: build/models.py:243 msgid "Select part to build" msgstr "Επιλέξτε τμήμα για κατασκευή" -#: build/models.py:218 +#: build/models.py:248 msgid "Sales Order Reference" msgstr "Κωδικός Παραγγελίας Πωλήσεων" -#: build/models.py:222 +#: build/models.py:252 msgid "SalesOrder to which this build is allocated" msgstr "SalesOrder στην οποία έχει διατεθεί αυτό το build" -#: build/models.py:227 build/serializers.py:964 -#: templates/js/translated/build.js:1728 -#: templates/js/translated/sales_order.js:1185 +#: build/models.py:257 build/serializers.py:1000 +#: templates/js/translated/build.js:1731 +#: templates/js/translated/sales_order.js:1221 msgid "Source Location" msgstr "Τοποθεσία Προέλευσης" -#: build/models.py:231 +#: build/models.py:261 msgid "Select location to take stock from for this build (leave blank to take from any stock location)" msgstr "Επιλέξτε τοποθεσία από την οποία θα γίνει απόθεμα, για αυτή την κατασκευή (αφήστε κενό για να πάρετε από οποιαδήποτε θέση αποθήκευσης)" -#: build/models.py:236 +#: build/models.py:266 msgid "Destination Location" msgstr "Τοποθεσία Προορισμού" -#: build/models.py:240 +#: build/models.py:270 msgid "Select location where the completed items will be stored" msgstr "Επιλέξτε την τοποθεσία όπου θα αποθηκευτούν τα ολοκληρωμένα στοιχεία" -#: build/models.py:244 +#: build/models.py:274 msgid "Build Quantity" msgstr "Ποσότητα Κατασκευής" -#: build/models.py:247 +#: build/models.py:277 msgid "Number of stock items to build" msgstr "Αριθμός αντικειμένων για κατασκευή" -#: build/models.py:251 +#: build/models.py:281 msgid "Completed items" msgstr "Ολοκληρωμένα αντικείμενα" -#: build/models.py:253 +#: build/models.py:283 msgid "Number of stock items which have been completed" msgstr "Αριθμός αντικειμένων αποθέματος που έχουν ολοκληρωθεί" -#: build/models.py:257 +#: build/models.py:287 msgid "Build Status" msgstr "Κατάσταση Κατασκευής" -#: build/models.py:261 +#: build/models.py:291 msgid "Build status code" msgstr "Κωδικός κατάστασης κατασκευής" -#: build/models.py:270 build/serializers.py:280 order/serializers.py:577 -#: stock/models.py:823 stock/serializers.py:1333 +#: build/models.py:300 build/serializers.py:287 order/serializers.py:581 +#: stock/models.py:840 stock/serializers.py:75 stock/serializers.py:1462 #: templates/js/translated/purchase_order.js:1129 msgid "Batch Code" msgstr "Κωδικός Παρτίδας" -#: build/models.py:274 build/serializers.py:281 +#: build/models.py:304 build/serializers.py:288 msgid "Batch code for this build output" msgstr "Κωδικός παρτίδας για αυτήν την κατασκευή" -#: build/models.py:277 order/models.py:304 part/models.py:1079 -#: part/templates/part/part_base.html:310 -#: templates/js/translated/return_order.js:339 -#: templates/js/translated/sales_order.js:827 +#: build/models.py:307 order/models.py:316 order/serializers.py:120 +#: part/models.py:1122 part/templates/part/part_base.html:310 +#: templates/js/translated/return_order.js:338 +#: templates/js/translated/sales_order.js:863 msgid "Creation Date" msgstr "Ημερομηνία Δημιουργίας" -#: build/models.py:281 +#: build/models.py:311 msgid "Target completion date" msgstr "Ημερομηνία ολοκλήρωσης στόχου" -#: build/models.py:282 +#: build/models.py:312 msgid "Target date for build completion. Build will be overdue after this date." msgstr "Ημερομηνία ολοκλήρωσης της κατασκευής. Η κατασκευή θα καθυστερήσει μετά από αυτή την ημερομηνία." -#: build/models.py:285 order/models.py:500 order/models.py:2041 -#: templates/js/translated/build.js:2245 +#: build/models.py:315 order/models.py:521 order/models.py:2101 +#: templates/js/translated/build.js:2247 msgid "Completion Date" msgstr "Ημερομηνία ολοκλήρωσης" -#: build/models.py:291 +#: build/models.py:321 msgid "completed by" msgstr "ολοκληρώθηκε από" -#: build/models.py:299 templates/js/translated/build.js:2205 +#: build/models.py:329 templates/js/translated/build.js:2207 msgid "Issued by" msgstr "Εκδόθηκε από" -#: build/models.py:300 +#: build/models.py:330 msgid "User who issued this build order" msgstr "Χρήστης που εξέδωσε αυτήν την παραγγελία κατασκευής" -#: build/models.py:308 build/templates/build/build_base.html:204 +#: build/models.py:338 build/templates/build/build_base.html:204 #: build/templates/build/detail.html:122 common/models.py:145 -#: order/models.py:322 order/templates/order/order_base.html:217 +#: order/models.py:334 order/templates/order/order_base.html:217 #: order/templates/order/return_order_base.html:188 -#: order/templates/order/sales_order_base.html:228 part/models.py:1096 +#: order/templates/order/sales_order_base.html:232 part/models.py:1139 #: part/templates/part/part_base.html:390 -#: report/templates/report/inventree_build_order_base.html:158 +#: report/templates/report/inventree_build_order_report.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/build.js:2219 +#: templates/js/translated/purchase_order.js:1763 +#: templates/js/translated/return_order.js:358 #: templates/js/translated/table_filters.js:531 msgid "Responsible" msgstr "Υπεύθυνος" -#: build/models.py:309 +#: build/models.py:339 msgid "User or group responsible for this build order" msgstr "Χρήστης ή ομάδα υπεύθυνη για αυτή την εντολή κατασκευής" -#: build/models.py:314 build/templates/build/detail.html:108 +#: build/models.py:344 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:819 +#: order/templates/order/sales_order_base.html:184 +#: part/templates/part/part_base.html:383 stock/models.py:836 #: stock/templates/stock/item_base.html:200 #: templates/js/translated/company.js:1019 msgid "External Link" msgstr "Εξωτερικοί σύνδεσμοι" -#: build/models.py:319 +#: build/models.py:349 msgid "Build Priority" msgstr "Προτεραιότητα Κατασκευής" -#: build/models.py:322 +#: build/models.py:352 msgid "Priority of this build order" msgstr "Προτεραιότητα αυτής της εντολής κατασκευής" -#: build/models.py:329 common/models.py:129 order/admin.py:18 -#: order/models.py:286 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 +#: build/models.py:359 common/models.py:129 order/admin.py:18 +#: order/models.py:298 templates/InvenTree/settings/settings_staff_js.html:146 +#: templates/js/translated/build.js:2144 +#: templates/js/translated/purchase_order.js:1710 +#: templates/js/translated/return_order.js:317 +#: templates/js/translated/sales_order.js:842 #: templates/js/translated/table_filters.js:48 #: templates/project_code_data.html:6 msgid "Project Code" msgstr "Κωδικός Έργου" -#: build/models.py:330 +#: build/models.py:360 msgid "Project code for this build order" msgstr "Κωδικός έργου για αυτήν την εντολή κατασκευής" -#: build/models.py:581 +#: build/models.py:593 build/models.py:658 +msgid "Failed to offload task to complete build allocations" +msgstr "" + +#: build/models.py:615 #, python-brace-format msgid "Build order {build} has been completed" msgstr "Η παραγγελία κατασκευής {build} έχει ολοκληρωθεί" -#: build/models.py:587 +#: build/models.py:621 msgid "A build order has been completed" msgstr "Η παραγγελία κατασκευής έχει ολοκληρωθεί" -#: build/models.py:805 build/models.py:880 +#: build/models.py:847 build/models.py:932 msgid "No build output specified" msgstr "Δεν καθορίστηκε έξοδος κατασκευής" -#: build/models.py:808 +#: build/models.py:850 msgid "Build output is already completed" msgstr "Η παραγγελία κατασκευής έχει ολοκληρωθεί" -#: build/models.py:811 +#: build/models.py:853 msgid "Build output does not match Build Order" msgstr "Η έξοδος κατασκευής δεν ταιριάζει με την παραγγελία κατασκευής" -#: build/models.py:884 build/serializers.py:223 build/serializers.py:262 -#: build/serializers.py:831 order/models.py:538 order/serializers.py:429 -#: order/serializers.py:572 part/serializers.py:1471 part/serializers.py:1871 -#: stock/models.py:662 stock/models.py:1474 stock/serializers.py:472 +#: build/models.py:936 build/serializers.py:220 build/serializers.py:269 +#: build/serializers.py:867 order/models.py:559 order/serializers.py:433 +#: order/serializers.py:576 part/serializers.py:1488 part/serializers.py:1888 +#: stock/models.py:679 stock/models.py:1499 stock/serializers.py:601 msgid "Quantity must be greater than zero" msgstr "Η ποσότητα πρέπει να είναι μεγαλύτερη από 0" -#: build/models.py:889 build/serializers.py:228 +#: build/models.py:941 build/serializers.py:225 msgid "Quantity cannot be greater than the output quantity" msgstr "Η ποσότητα δεν μπορεί να είναι μεγαλύτερη από την παραγόμενη ποσότητα" -#: build/models.py:946 build/serializers.py:533 +#: build/models.py:1001 build/serializers.py:548 #, python-brace-format msgid "Build output {serial} has not passed all required tests" msgstr "Το προϊόν κατασκευής {serial} δεν έχει περάσει όλες τις απαιτούμενες δοκιμές" -#: build/models.py:1308 +#: build/models.py:1352 +msgid "Build Order Line Item" +msgstr "" + +#: build/models.py:1377 msgid "Build object" msgstr "Αντικείμενο κατασκευής" -#: build/models.py:1322 build/models.py:1578 build/serializers.py:210 -#: build/serializers.py:247 build/templates/build/build_base.html:102 -#: build/templates/build/detail.html:34 common/models.py:2516 -#: order/models.py:1259 order/models.py:1916 order/serializers.py:1335 -#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:416 -#: part/forms.py:48 part/models.py:3162 part/models.py:4035 +#: build/models.py:1391 build/models.py:1647 build/serializers.py:207 +#: build/serializers.py:254 build/templates/build/build_base.html:102 +#: build/templates/build/detail.html:34 common/models.py:2539 +#: order/models.py:1308 order/models.py:1967 order/serializers.py:1339 +#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:418 +#: part/forms.py:48 part/models.py:3205 part/models.py:4078 #: 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 +#: report/templates/report/inventree_build_order_report.html:113 +#: report/templates/report/inventree_purchase_order_report.html:29 +#: report/templates/report/inventree_sales_order_report.html:29 +#: report/templates/report/inventree_stock_location_report.html:104 +#: report/templates/report/inventree_test_report.html:90 +#: report/templates/report/inventree_test_report.html:170 stock/admin.py:160 +#: stock/serializers.py:126 stock/serializers.py:166 stock/serializers.py:592 #: 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/build.js:737 templates/js/translated/build.js:1369 +#: templates/js/translated/build.js:1746 templates/js/translated/build.js:2357 #: templates/js/translated/company.js:1818 -#: templates/js/translated/model_renderers.js:230 +#: templates/js/translated/model_renderers.js:236 #: templates/js/translated/order.js:304 templates/js/translated/part.js:961 -#: templates/js/translated/part.js:1811 templates/js/translated/part.js:3341 +#: templates/js/translated/part.js:1811 templates/js/translated/part.js:3340 #: 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/purchase_order.js:1852 +#: templates/js/translated/purchase_order.js:2071 #: 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/sales_order.js:1235 +#: templates/js/translated/sales_order.js:1554 +#: templates/js/translated/sales_order.js:1644 +#: templates/js/translated/sales_order.js:1734 +#: templates/js/translated/sales_order.js:1860 #: templates/js/translated/stock.js:564 templates/js/translated/stock.js:702 #: templates/js/translated/stock.js:873 templates/js/translated/stock.js:3021 #: templates/js/translated/stock.js:3104 msgid "Quantity" msgstr "Ποσότητα" -#: build/models.py:1323 +#: build/models.py:1392 msgid "Required quantity for build order" msgstr "Απαιτούμενη ποσότητα για την εντολή κατασκευής" -#: build/models.py:1403 +#: build/models.py:1472 msgid "Build item must specify a build output, as master part is marked as trackable" msgstr "Το στοιχείο κατασκευής πρέπει να ορίζει μια έξοδο κατασκευής, καθώς το κύριο τμήμα επισημαίνεται ως ανιχνεύσιμο" -#: build/models.py:1412 +#: build/models.py:1481 #, python-brace-format msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})" msgstr "Η καταχωρημένη ποσότητα ({q}) δεν πρέπει να υπερβαίνει τη διαθέσιμη ποσότητα αποθέματος ({a})" -#: build/models.py:1422 order/models.py:1867 +#: build/models.py:1491 order/models.py:1918 msgid "Stock item is over-allocated" msgstr "Στοιχείο αποθέματος είναι υπερ-κατανεμημένο" -#: build/models.py:1428 order/models.py:1870 +#: build/models.py:1497 order/models.py:1921 msgid "Allocation quantity must be greater than zero" msgstr "Η ποσότητα πρέπει να είναι μεγαλύτερη από 0" -#: build/models.py:1434 +#: build/models.py:1503 msgid "Quantity must be 1 for serialized stock" msgstr "Η ποσότητα πρέπει να είναι 1 για σειριακό απόθεμα" -#: build/models.py:1493 +#: build/models.py:1562 msgid "Selected stock item does not match BOM line" msgstr "Το επιλεγμένο στοιχείο αποθέματος δεν ταιριάζει με τη γραμμή ΤΥ" -#: build/models.py:1565 build/serializers.py:811 order/serializers.py:1179 -#: order/serializers.py:1200 stock/serializers.py:566 stock/serializers.py:1052 -#: stock/serializers.py:1164 stock/templates/stock/item_base.html:10 +#: build/models.py:1634 build/serializers.py:847 order/serializers.py:1183 +#: order/serializers.py:1204 stock/models.py:360 stock/serializers.py:92 +#: stock/serializers.py:695 stock/serializers.py:1181 stock/serializers.py:1293 +#: 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/build.js:1745 #: 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/sales_order.js:1234 +#: templates/js/translated/sales_order.js:1535 +#: templates/js/translated/sales_order.js:1540 +#: templates/js/translated/sales_order.js:1641 +#: templates/js/translated/sales_order.js:1728 #: templates/js/translated/stock.js:677 templates/js/translated/stock.js:843 #: templates/js/translated/stock.js:2977 msgid "Stock Item" msgstr "Στοιχείο Αποθέματος" -#: build/models.py:1566 +#: build/models.py:1635 msgid "Source stock item" msgstr "Στοιχείο πηγαίου αποθέματος" -#: build/models.py:1579 +#: build/models.py:1648 msgid "Stock quantity to allocate to build" msgstr "Ποσότητα αποθέματος για διάθεση για κατασκευή" -#: build/models.py:1587 +#: build/models.py:1656 msgid "Install into" msgstr "Εγκατάσταση σε" -#: build/models.py:1588 +#: build/models.py:1657 msgid "Destination stock item" msgstr "Αποθήκη προορισμού" -#: build/serializers.py:160 build/serializers.py:840 -#: templates/js/translated/build.js:1319 +#: build/serializers.py:157 build/serializers.py:876 +#: templates/js/translated/build.js:1322 msgid "Build Output" msgstr "Κατασκευή Εξόδου" -#: build/serializers.py:172 +#: build/serializers.py:169 msgid "Build output does not match the parent build" msgstr "Η έξοδος κατασκευής δεν ταιριάζει με την παραγγελία κατασκευής" -#: build/serializers.py:176 +#: build/serializers.py:173 msgid "Output part does not match BuildOrder part" msgstr "Το εξερχόμενο μέρος δεν ταιριάζει με το μέρος BuildOrder" -#: build/serializers.py:180 +#: build/serializers.py:177 msgid "This build output has already been completed" msgstr "Η παραγγελία κατασκευής έχει ολοκληρωθεί" -#: build/serializers.py:191 +#: build/serializers.py:188 msgid "This build output is not fully allocated" msgstr "Αυτή η έξοδος κατασκευής δεν έχει εκχωρηθεί πλήρως" -#: build/serializers.py:211 build/serializers.py:248 +#: build/serializers.py:208 build/serializers.py:255 msgid "Enter quantity for build output" msgstr "Εισάγετε ποσότητα για την έξοδο κατασκευής" -#: build/serializers.py:269 +#: build/serializers.py:276 msgid "Integer quantity required for trackable parts" msgstr "Ακέραιη ποσότητα που απαιτείται για ανιχνεύσιμα μέρη" -#: build/serializers.py:272 +#: build/serializers.py:279 msgid "Integer quantity required, as the bill of materials contains trackable parts" msgstr "Ακέραιη ποσότητα που απαιτείται, καθώς ο λογαριασμός των υλικών περιέχει ανιχνεύσιμα μέρη" -#: build/serializers.py:287 order/serializers.py:585 order/serializers.py:1339 -#: stock/serializers.py:483 templates/js/translated/purchase_order.js:1153 +#: build/serializers.py:294 order/serializers.py:589 order/serializers.py:1343 +#: stock/serializers.py:612 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 +#: build/serializers.py:295 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:995 -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:561 -#: order/serializers.py:669 order/serializers.py:1675 part/serializers.py:1127 -#: 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 +#: build/serializers.py:300 build/serializers.py:441 build/serializers.py:513 +#: order/serializers.py:565 order/serializers.py:673 order/serializers.py:1679 +#: part/serializers.py:1144 stock/serializers.py:101 stock/serializers.py:623 +#: stock/serializers.py:783 stock/serializers.py:879 stock/serializers.py:1325 +#: stock/serializers.py:1581 stock/templates/stock/item_base.html:394 #: 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/barcode.js:795 templates/js/translated/build.js:1001 +#: templates/js/translated/build.js:2372 #: templates/js/translated/purchase_order.js:1178 #: templates/js/translated/purchase_order.js:1268 -#: templates/js/translated/sales_order.js: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/sales_order.js:1547 +#: templates/js/translated/sales_order.js:1655 +#: templates/js/translated/sales_order.js:1663 +#: templates/js/translated/sales_order.js:1742 #: templates/js/translated/stock.js:678 templates/js/translated/stock.js:844 -#: templates/js/translated/stock.js:1060 templates/js/translated/stock.js:2200 +#: templates/js/translated/stock.js:1060 templates/js/translated/stock.js:2201 #: templates/js/translated/stock.js:2871 msgid "Location" msgstr "Τοποθεσία" -#: build/serializers.py:427 +#: build/serializers.py:301 +msgid "Stock location for build output" +msgstr "" + +#: build/serializers.py:315 +msgid "Auto Allocate Serial Numbers" +msgstr "Αυτόματη Κατανομή Σειριακών Αριθμών" + +#: build/serializers.py:316 +msgid "Automatically allocate required items with matching serial numbers" +msgstr "Αυτόματη κατανομή των απαιτούμενων στοιχείων με τους αντίστοιχους σειριακούς αριθμούς" + +#: build/serializers.py:331 +msgid "Serial numbers must be provided for trackable parts" +msgstr "" + +#: build/serializers.py:356 stock/api.py:1031 +msgid "The following serial numbers already exist or are invalid" +msgstr "Οι παρακάτω σειριακοί αριθμοί υπάρχουν ήδη ή δεν είναι έγκυροι" + +#: build/serializers.py:403 build/serializers.py:465 build/serializers.py:554 +msgid "A list of build outputs must be provided" +msgstr "Πρέπει να παρέχεται μια λίστα με τα αποτελέσματα κατασκευής" + +#: build/serializers.py:442 msgid "Stock location for scrapped outputs" msgstr "Θέση αποθέματος για απορριφθείσες παραγωγές" -#: build/serializers.py:433 +#: build/serializers.py:448 msgid "Discard Allocations" msgstr "Απόρριψη Κατανομών" -#: build/serializers.py:434 +#: build/serializers.py:449 msgid "Discard any stock allocations for scrapped outputs" msgstr "Απορρίψτε τυχόν κατανομές αποθέματος για παραγωγές που έχουν απορριφθεί" -#: build/serializers.py:439 +#: build/serializers.py:454 msgid "Reason for scrapping build output(s)" msgstr "Αιτία απόρριψης προϊόντων κατασκευής" -#: build/serializers.py:499 +#: build/serializers.py:514 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:922 -#: order/models.py:2020 order/serializers.py:593 stock/admin.py:165 -#: stock/serializers.py:801 stock/serializers.py:1340 +#: build/serializers.py:520 build/templates/build/build_base.html:151 +#: build/templates/build/detail.html:62 order/models.py:952 +#: order/models.py:2080 order/serializers.py:597 stock/admin.py:165 +#: stock/serializers.py:930 stock/serializers.py:1469 #: stock/templates/stock/item_base.html:427 -#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2189 +#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2191 #: templates/js/translated/purchase_order.js:1308 -#: templates/js/translated/purchase_order.js: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/purchase_order.js:1722 +#: templates/js/translated/return_order.js:330 +#: templates/js/translated/sales_order.js:855 +#: templates/js/translated/stock.js:2176 templates/js/translated/stock.js:2995 #: templates/js/translated/stock.js:3120 msgid "Status" msgstr "Κατάσταση" -#: build/serializers.py:511 +#: build/serializers.py:526 msgid "Accept Incomplete Allocation" msgstr "Αποδοχή Ελλιπούς Δέσμευσης" -#: build/serializers.py:512 +#: build/serializers.py:527 msgid "Complete outputs if stock has not been fully allocated" msgstr "Ολοκλήρωσε τα προϊόντα εάν το απόθεμα δεν έχει δεσμευτεί πλήρως" -#: build/serializers.py:592 -msgid "Remove Allocated Stock" -msgstr "Αφαίρεση Καταχωρημένου Αποθέματος" +#: build/serializers.py:612 +msgid "Consume Allocated Stock" +msgstr "" -#: build/serializers.py:593 -msgid "Subtract any stock which has already been allocated to this build" -msgstr "Αφαίρεσε το απόθεμα που έχει κατανεμηθεί σε αυτή την κατασκευή" +#: build/serializers.py:613 +msgid "Consume any stock which has already been allocated to this build" +msgstr "" -#: build/serializers.py:599 +#: build/serializers.py:619 msgid "Remove Incomplete Outputs" msgstr "Αφαίρεση Ατελείωτων Προϊόντων" -#: build/serializers.py:600 +#: build/serializers.py:620 msgid "Delete any build outputs which have not been completed" msgstr "Διαγράψτε τυχόν προϊόντα κατασκευής που δεν έχουν ολοκληρωθεί" -#: build/serializers.py:627 +#: build/serializers.py:647 msgid "Not permitted" msgstr "Δεν επιτρέπεται" -#: build/serializers.py:628 +#: build/serializers.py:648 msgid "Accept as consumed by this build order" msgstr "Αποδοχή ως κατανάλωση για αυτή την παραγγελία κατασκευής" -#: build/serializers.py:629 +#: build/serializers.py:649 msgid "Deallocate before completing this build order" msgstr "Αποδέσμευση πριν από την ολοκλήρωση αυτής της παραγγελίας κατασκευής" -#: build/serializers.py:651 +#: build/serializers.py:679 msgid "Overallocated Stock" msgstr "Υπερ-δεσμευμένο Απόθεμα" -#: build/serializers.py:653 +#: build/serializers.py:681 msgid "How do you want to handle extra stock items assigned to the build order" msgstr "Πώς θέλετε να χειριστείτε το επιπλέον απόθεμα που έχει δεσμευτεί στην παραγγελία κατασκευής" -#: build/serializers.py:663 +#: build/serializers.py:691 msgid "Some stock items have been overallocated" msgstr "Μερικά στοιχεία αποθέματος έχουν υπερ-δεσμευτεί" -#: build/serializers.py:668 +#: build/serializers.py:696 msgid "Accept Unallocated" msgstr "Αποδοχή Μη Δεσμευμένων" -#: build/serializers.py:669 +#: build/serializers.py:697 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 +#: build/serializers.py:707 templates/js/translated/build.js:315 msgid "Required stock has not been fully allocated" msgstr "Το απαιτούμενο απόθεμα δεν έχει δεσμευτεί πλήρως" -#: build/serializers.py:684 order/serializers.py:297 order/serializers.py:1242 +#: build/serializers.py:712 order/serializers.py:301 order/serializers.py:1246 msgid "Accept Incomplete" msgstr "Αποδοχή Μη Ολοκληρωμένων" -#: build/serializers.py:685 +#: build/serializers.py:713 msgid "Accept that the required number of build outputs have not been completed" msgstr "Αποδεχτείτε ότι ο απαιτούμενος αριθμός προϊόντων κατασκευής δεν έχει ολοκληρωθεί" -#: build/serializers.py:695 templates/js/translated/build.js:319 +#: build/serializers.py:723 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 +#: build/serializers.py:732 templates/js/translated/build.js:303 msgid "Build order has incomplete outputs" msgstr "Η παραγγελία κατασκευής έχει ελλιπή προϊόντα" -#: build/serializers.py:734 +#: build/serializers.py:770 msgid "Build Line" msgstr "Γραμμή Κατασκευής" -#: build/serializers.py:744 +#: build/serializers.py:780 msgid "Build output" msgstr "Προϊόν Κατασκευής" -#: build/serializers.py:752 +#: build/serializers.py:788 msgid "Build output must point to the same build" msgstr "Το προϊόν κατασκευής πρέπει να δείχνει στην ίδια κατασκευή" -#: build/serializers.py:788 +#: build/serializers.py:824 msgid "Build Line Item" msgstr "Αντικείμενο Γραμμής Κατασκευής" -#: build/serializers.py:802 +#: build/serializers.py:838 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:1065 +#: build/serializers.py:853 stock/serializers.py:1194 msgid "Item must be in stock" msgstr "" -#: build/serializers.py:865 order/serializers.py:1233 +#: build/serializers.py:901 order/serializers.py:1237 #, python-brace-format msgid "Available quantity ({q}) exceeded" msgstr "" -#: build/serializers.py:871 +#: build/serializers.py:907 msgid "Build output must be specified for allocation of tracked parts" msgstr "" -#: build/serializers.py:878 +#: build/serializers.py:914 msgid "Build output cannot be specified for allocation of untracked parts" msgstr "" -#: build/serializers.py:902 order/serializers.py:1485 +#: build/serializers.py:938 order/serializers.py:1489 msgid "Allocation items must be provided" msgstr "" -#: build/serializers.py:965 +#: build/serializers.py:1001 msgid "Stock location where parts are to be sourced (leave blank to take from any location)" msgstr "" -#: build/serializers.py:973 +#: build/serializers.py:1009 msgid "Exclude Location" msgstr "" -#: build/serializers.py:974 +#: build/serializers.py:1010 msgid "Exclude stock items from this selected location" msgstr "" -#: build/serializers.py:979 +#: build/serializers.py:1015 msgid "Interchangeable Stock" msgstr "" -#: build/serializers.py:980 +#: build/serializers.py:1016 msgid "Stock items in multiple locations can be used interchangeably" msgstr "" -#: build/serializers.py:985 +#: build/serializers.py:1021 msgid "Substitute Stock" msgstr "" -#: build/serializers.py:986 +#: build/serializers.py:1022 msgid "Allow allocation of substitute parts" msgstr "" -#: build/serializers.py:991 +#: build/serializers.py:1027 msgid "Optional Items" msgstr "" -#: build/serializers.py:992 +#: build/serializers.py:1028 msgid "Allocate optional BOM items to build order" msgstr "" -#: build/serializers.py:1097 part/models.py:3930 part/models.py:4366 -#: stock/api.py:758 +#: build/serializers.py:1050 +msgid "Failed to start auto-allocation task" +msgstr "" + +#: build/serializers.py:1140 part/models.py:3973 part/models.py:4409 +#: stock/api.py:794 msgid "BOM Item" msgstr "" -#: build/serializers.py:1106 templates/js/translated/index.js:130 +#: build/serializers.py:1149 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:817 part/serializers.py:1489 +#: build/serializers.py:1154 part/admin.py:132 part/bom.py:173 +#: part/serializers.py:832 part/serializers.py:1506 #: 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/build.js:2613 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:1491 -#: templates/js/translated/build.js:2618 +#: build/serializers.py:1159 part/serializers.py:1508 +#: templates/js/translated/build.js:2617 #: templates/js/translated/table_filters.js:360 msgid "In Production" msgstr "" -#: build/serializers.py:1121 part/bom.py:172 part/serializers.py:1514 +#: build/serializers.py:1164 part/bom.py:172 part/serializers.py:1531 #: part/templates/part/part_base.html:192 -#: templates/js/translated/sales_order.js:1893 +#: templates/js/translated/sales_order.js:1929 msgid "Available Stock" msgstr "" -#: build/tasks.py:172 +#: build/status_codes.py:11 generic/states/tests.py:17 order/status_codes.py:12 +#: order/status_codes.py:37 order/status_codes.py:64 order/status_codes.py:82 +#: templates/js/translated/table_filters.js:598 +msgid "Pending" +msgstr "Σε εκκρεμότητα" + +#: build/status_codes.py:12 +msgid "Production" +msgstr "Παραγωγή" + +#: build/status_codes.py:13 order/status_codes.py:15 order/status_codes.py:45 +#: order/status_codes.py:70 +msgid "Cancelled" +msgstr "Ακυρώθηκε" + +#: build/status_codes.py:14 generic/states/tests.py:19 order/status_codes.py:14 +#: order/status_codes.py:44 order/status_codes.py:69 +#: order/templates/order/order_base.html:158 +#: order/templates/order/sales_order_base.html:165 report/models.py:443 +msgid "Complete" +msgstr "Ολοκληρώθηκε" + +#: build/tasks.py:184 msgid "Stock required for build order" msgstr "" -#: build/tasks.py:189 +#: build/tasks.py:201 msgid "Overdue Build Order" msgstr "" -#: build/tasks.py:194 +#: build/tasks.py:206 #, python-brace-format msgid "Build order {bo} is now overdue" msgstr "" @@ -1822,18 +1673,18 @@ 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:297 -#: order/models.py:1294 order/templates/order/order_base.html:186 +#: build/templates/build/detail.html:138 order/models.py:309 +#: order/models.py:1343 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 +#: order/templates/order/sales_order_base.html:196 +#: report/templates/report/inventree_build_order_report.html:125 +#: templates/js/translated/build.js:2239 templates/js/translated/part.js:1830 +#: templates/js/translated/purchase_order.js:1739 +#: templates/js/translated/purchase_order.js:2147 +#: templates/js/translated/return_order.js:346 +#: templates/js/translated/return_order.js:750 +#: templates/js/translated/sales_order.js:871 +#: templates/js/translated/sales_order.js:1903 msgid "Target Date" msgstr "Επιθυμητή Προθεσμία" @@ -1846,7 +1697,7 @@ msgstr "Αυτή η κατασκευή είχε προθεσμία %(target)s" #: 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 +#: order/templates/order/sales_order_base.html:126 #: templates/js/translated/table_filters.js:98 #: templates/js/translated/table_filters.js:524 #: templates/js/translated/table_filters.js:626 @@ -1860,42 +1711,42 @@ msgid "Completed Outputs" msgstr "Ολοκληρωμένα Προϊόντα" #: build/templates/build/build_base.html:190 -#: build/templates/build/detail.html:101 order/api.py:1507 order/models.py:1536 -#: order/models.py:1650 order/models.py:1804 +#: build/templates/build/detail.html:101 order/api.py:1511 order/models.py:847 +#: order/models.py:1587 order/models.py:1701 order/models.py:1855 #: 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 +#: report/templates/report/inventree_build_order_report.html:135 +#: report/templates/report/inventree_sales_order_report.html:14 #: stock/templates/stock/item_base.html:369 #: templates/email/overdue_sales_order.html:15 #: templates/js/translated/pricing.js:929 -#: templates/js/translated/sales_order.js:769 -#: templates/js/translated/sales_order.js:992 +#: templates/js/translated/sales_order.js:805 +#: templates/js/translated/sales_order.js:1028 #: templates/js/translated/stock.js:2924 msgid "Sales Order" msgstr "Εντολές Πώλησης" #: build/templates/build/build_base.html:197 #: build/templates/build/detail.html:115 -#: report/templates/report/inventree_build_order_base.html:152 +#: report/templates/report/inventree_build_order_report.html:152 #: templates/js/translated/table_filters.js:24 msgid "Issued By" msgstr "Εκδόθηκε από" #: build/templates/build/build_base.html:211 -#: build/templates/build/detail.html:94 templates/js/translated/build.js:2154 +#: build/templates/build/detail.html:94 templates/js/translated/build.js:2156 msgid "Priority" msgstr "Προτεραιότητα" -#: build/templates/build/build_base.html:273 +#: build/templates/build/build_base.html:269 msgid "Delete Build Order" msgstr "Διαγραφή Εντολής Κατασκευής" -#: build/templates/build/build_base.html:283 +#: build/templates/build/build_base.html:279 msgid "Build Order QR Code" msgstr "Κωδικός QR Εντολής Κατασκευής" -#: build/templates/build/build_base.html:295 +#: build/templates/build/build_base.html:291 msgid "Link Barcode to Build Order" msgstr "Σύνδεση Barcode με την Εντολή Κατασκευής" @@ -1911,8 +1762,8 @@ msgstr "Προέλευση Αποθέματος" msgid "Stock can be taken from any available location." msgstr "Το απόθεμα μπορεί να ληφθεί από οποιαδήποτε διαθέσιμη τοποθεσία." -#: build/templates/build/detail.html:49 order/models.py:1430 -#: templates/js/translated/purchase_order.js:2190 +#: build/templates/build/detail.html:49 order/models.py:1479 +#: templates/js/translated/purchase_order.js:2189 msgid "Destination" msgstr "Προορισμός" @@ -1926,10 +1777,10 @@ 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/build.js:1380 +#: templates/js/translated/model_renderers.js:241 #: templates/js/translated/purchase_order.js:1274 -#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2189 +#: templates/js/translated/stock.js:1133 templates/js/translated/stock.js:2190 #: templates/js/translated/stock.js:3127 #: templates/js/translated/table_filters.js:313 #: templates/js/translated/table_filters.js:404 @@ -1939,8 +1790,8 @@ 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 +#: order/templates/order/sales_order_base.html:190 +#: templates/js/translated/build.js:2199 msgid "Created" msgstr "" @@ -1949,7 +1800,7 @@ msgid "No target date set" msgstr "" #: build/templates/build/detail.html:149 -#: order/templates/order/sales_order_base.html:202 +#: order/templates/order/sales_order_base.html:206 #: templates/js/translated/table_filters.js:689 msgid "Completed" msgstr "" @@ -2043,11 +1894,11 @@ msgstr "" msgid "Build Notes" msgstr "" -#: build/templates/build/detail.html:434 +#: build/templates/build/detail.html:435 msgid "Allocation Complete" msgstr "" -#: build/templates/build/detail.html:435 +#: build/templates/build/detail.html:436 msgid "All lines have been fully allocated" msgstr "" @@ -2125,1458 +1976,1485 @@ msgstr "" msgid "User or group responsible for this project" msgstr "" -#: common/models.py:765 +#: common/models.py:766 msgid "Settings key (must be unique - case insensitive)" msgstr "" -#: common/models.py:769 +#: common/models.py:770 msgid "Settings value" msgstr "" -#: common/models.py:821 +#: common/models.py:822 msgid "Chosen value is not a valid option" msgstr "" -#: common/models.py:837 +#: common/models.py:838 msgid "Value must be a boolean value" msgstr "" -#: common/models.py:845 +#: common/models.py:846 msgid "Value must be an integer value" msgstr "" -#: common/models.py:882 +#: common/models.py:883 msgid "Key string must be unique" msgstr "" -#: common/models.py:1114 +#: common/models.py:1115 msgid "No group" msgstr "" -#: common/models.py:1157 +#: common/models.py:1158 msgid "An empty domain is not allowed." msgstr "" -#: common/models.py:1159 +#: common/models.py:1160 #, python-brace-format msgid "Invalid domain name: {domain}" msgstr "" -#: common/models.py:1171 +#: common/models.py:1172 msgid "No plugin" msgstr "" -#: common/models.py:1259 +#: common/models.py:1260 msgid "Restart required" msgstr "" -#: common/models.py:1261 +#: common/models.py:1262 msgid "A setting has been changed which requires a server restart" msgstr "" -#: common/models.py:1268 +#: common/models.py:1269 msgid "Pending migrations" msgstr "" -#: common/models.py:1269 +#: common/models.py:1270 msgid "Number of pending database migrations" msgstr "" -#: common/models.py:1274 +#: common/models.py:1275 msgid "Server Instance Name" msgstr "" -#: common/models.py:1276 +#: common/models.py:1277 msgid "String descriptor for the server instance" msgstr "" -#: common/models.py:1280 +#: common/models.py:1281 msgid "Use instance name" msgstr "" -#: common/models.py:1281 +#: common/models.py:1282 msgid "Use the instance name in the title-bar" msgstr "" -#: common/models.py:1286 +#: common/models.py:1287 msgid "Restrict showing `about`" msgstr "" -#: common/models.py:1287 +#: common/models.py:1288 msgid "Show the `about` modal only to superusers" msgstr "" -#: common/models.py:1292 company/models.py:108 company/models.py:109 +#: common/models.py:1293 company/models.py:108 company/models.py:109 msgid "Company name" msgstr "" -#: common/models.py:1293 +#: common/models.py:1294 msgid "Internal company name" msgstr "" -#: common/models.py:1297 +#: common/models.py:1298 msgid "Base URL" msgstr "" -#: common/models.py:1298 +#: common/models.py:1299 msgid "Base URL for server instance" msgstr "" -#: common/models.py:1304 +#: common/models.py:1305 msgid "Default Currency" msgstr "" -#: common/models.py:1305 +#: common/models.py:1306 msgid "Select base currency for pricing calculations" msgstr "" -#: common/models.py:1311 +#: common/models.py:1312 msgid "Currency Update Interval" msgstr "" -#: common/models.py:1313 +#: common/models.py:1314 msgid "How often to update exchange rates (set to zero to disable)" msgstr "" -#: common/models.py:1316 common/models.py:1372 common/models.py:1385 -#: common/models.py:1393 common/models.py:1402 common/models.py:1411 -#: common/models.py:1613 common/models.py:1635 common/models.py:1750 -#: common/models.py:2053 +#: common/models.py:1317 common/models.py:1373 common/models.py:1386 +#: common/models.py:1394 common/models.py:1403 common/models.py:1412 +#: common/models.py:1620 common/models.py:1642 common/models.py:1757 +#: common/models.py:2076 msgid "days" msgstr "" -#: common/models.py:1320 +#: common/models.py:1321 msgid "Currency Update Plugin" msgstr "" -#: common/models.py:1321 +#: common/models.py:1322 msgid "Currency update plugin to use" msgstr "" -#: common/models.py:1326 +#: common/models.py:1327 msgid "Download from URL" msgstr "" -#: common/models.py:1328 +#: common/models.py:1329 msgid "Allow download of remote images and files from external URL" msgstr "" -#: common/models.py:1334 +#: common/models.py:1335 msgid "Download Size Limit" msgstr "" -#: common/models.py:1335 +#: common/models.py:1336 msgid "Maximum allowable download size for remote image" msgstr "" -#: common/models.py:1341 +#: common/models.py:1342 msgid "User-agent used to download from URL" msgstr "" -#: common/models.py:1343 +#: common/models.py:1344 msgid "Allow to override the user-agent used to download images and files from external URL (leave blank for the default)" msgstr "" -#: common/models.py:1348 +#: common/models.py:1349 msgid "Strict URL Validation" msgstr "" -#: common/models.py:1349 +#: common/models.py:1350 msgid "Require schema specification when validating URLs" msgstr "" -#: common/models.py:1354 +#: common/models.py:1355 msgid "Require confirm" msgstr "" -#: common/models.py:1355 +#: common/models.py:1356 msgid "Require explicit user confirmation for certain action." msgstr "" -#: common/models.py:1360 +#: common/models.py:1361 msgid "Tree Depth" msgstr "" -#: common/models.py:1362 +#: common/models.py:1363 msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed." msgstr "" -#: common/models.py:1368 +#: common/models.py:1369 msgid "Update Check Interval" msgstr "" -#: common/models.py:1369 +#: common/models.py:1370 msgid "How often to check for updates (set to zero to disable)" msgstr "" -#: common/models.py:1375 +#: common/models.py:1376 msgid "Automatic Backup" msgstr "" -#: common/models.py:1376 +#: common/models.py:1377 msgid "Enable automatic backup of database and media files" msgstr "" -#: common/models.py:1381 +#: common/models.py:1382 msgid "Auto Backup Interval" msgstr "" -#: common/models.py:1382 +#: common/models.py:1383 msgid "Specify number of days between automated backup events" msgstr "" -#: common/models.py:1388 +#: common/models.py:1389 msgid "Task Deletion Interval" msgstr "" -#: common/models.py:1390 +#: common/models.py:1391 msgid "Background task results will be deleted after specified number of days" msgstr "" -#: common/models.py:1397 +#: common/models.py:1398 msgid "Error Log Deletion Interval" msgstr "" -#: common/models.py:1399 +#: common/models.py:1400 msgid "Error logs will be deleted after specified number of days" msgstr "" -#: common/models.py:1406 +#: common/models.py:1407 msgid "Notification Deletion Interval" msgstr "" -#: common/models.py:1408 +#: common/models.py:1409 msgid "User notifications will be deleted after specified number of days" msgstr "" -#: common/models.py:1415 templates/InvenTree/settings/sidebar.html:31 +#: common/models.py:1416 templates/InvenTree/settings/sidebar.html:31 msgid "Barcode Support" msgstr "" -#: common/models.py:1416 +#: common/models.py:1417 msgid "Enable barcode scanner support in the web interface" msgstr "" -#: common/models.py:1421 +#: common/models.py:1422 msgid "Barcode Input Delay" msgstr "" -#: common/models.py:1422 +#: common/models.py:1423 msgid "Barcode input processing delay time" msgstr "" -#: common/models.py:1428 +#: common/models.py:1429 msgid "Barcode Webcam Support" msgstr "" -#: common/models.py:1429 +#: common/models.py:1430 msgid "Allow barcode scanning via webcam in browser" msgstr "" -#: common/models.py:1434 +#: common/models.py:1435 msgid "Part Revisions" msgstr "" -#: common/models.py:1435 +#: common/models.py:1436 msgid "Enable revision field for Part" msgstr "" -#: common/models.py:1440 +#: common/models.py:1441 +msgid "Allow Deletion from Assembly" +msgstr "" + +#: common/models.py:1442 +msgid "Allow deletion of parts which are used in an assembly" +msgstr "" + +#: common/models.py:1447 msgid "IPN Regex" msgstr "" -#: common/models.py:1441 +#: common/models.py:1448 msgid "Regular expression pattern for matching Part IPN" msgstr "" -#: common/models.py:1444 +#: common/models.py:1451 msgid "Allow Duplicate IPN" msgstr "" -#: common/models.py:1445 +#: common/models.py:1452 msgid "Allow multiple parts to share the same IPN" msgstr "" -#: common/models.py:1450 +#: common/models.py:1457 msgid "Allow Editing IPN" msgstr "" -#: common/models.py:1451 +#: common/models.py:1458 msgid "Allow changing the IPN value while editing a part" msgstr "" -#: common/models.py:1456 +#: common/models.py:1463 msgid "Copy Part BOM Data" msgstr "" -#: common/models.py:1457 +#: common/models.py:1464 msgid "Copy BOM data by default when duplicating a part" msgstr "" -#: common/models.py:1462 +#: common/models.py:1469 msgid "Copy Part Parameter Data" msgstr "" -#: common/models.py:1463 +#: common/models.py:1470 msgid "Copy parameter data by default when duplicating a part" msgstr "" -#: common/models.py:1468 +#: common/models.py:1475 msgid "Copy Part Test Data" msgstr "" -#: common/models.py:1469 +#: common/models.py:1476 msgid "Copy test data by default when duplicating a part" msgstr "" -#: common/models.py:1474 +#: common/models.py:1481 msgid "Copy Category Parameter Templates" msgstr "" -#: common/models.py:1475 +#: common/models.py:1482 msgid "Copy category parameter templates when creating a part" msgstr "" -#: common/models.py:1480 part/admin.py:108 part/models.py:3772 -#: report/models.py:182 stock/serializers.py:99 +#: common/models.py:1487 part/admin.py:108 part/models.py:3815 +#: report/models.py:293 report/models.py:360 report/serializers.py:90 +#: report/serializers.py:131 stock/serializers.py:228 #: templates/js/translated/table_filters.js:139 #: templates/js/translated/table_filters.js:767 msgid "Template" msgstr "" -#: common/models.py:1481 +#: common/models.py:1488 msgid "Parts are templates by default" msgstr "" -#: common/models.py:1486 part/admin.py:91 part/admin.py:431 part/models.py:1016 +#: common/models.py:1493 part/admin.py:91 part/admin.py:433 part/models.py:1059 #: 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:1487 +#: common/models.py:1494 msgid "Parts can be assembled from other components by default" msgstr "" -#: common/models.py:1492 part/admin.py:95 part/models.py:1022 +#: common/models.py:1499 part/admin.py:95 part/models.py:1065 #: templates/js/translated/table_filters.js:729 msgid "Component" msgstr "" -#: common/models.py:1493 +#: common/models.py:1500 msgid "Parts can be used as sub-components by default" msgstr "" -#: common/models.py:1498 part/admin.py:100 part/models.py:1034 +#: common/models.py:1505 part/admin.py:100 part/models.py:1077 msgid "Purchaseable" msgstr "" -#: common/models.py:1499 +#: common/models.py:1506 msgid "Parts are purchaseable by default" msgstr "" -#: common/models.py:1504 part/admin.py:104 part/models.py:1040 +#: common/models.py:1511 part/admin.py:104 part/models.py:1083 #: templates/js/translated/table_filters.js:755 msgid "Salable" msgstr "" -#: common/models.py:1505 +#: common/models.py:1512 msgid "Parts are salable by default" msgstr "" -#: common/models.py:1510 part/admin.py:113 part/models.py:1028 +#: common/models.py:1517 part/admin.py:113 part/models.py:1071 #: 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:1511 +#: common/models.py:1518 msgid "Parts are trackable by default" msgstr "" -#: common/models.py:1516 part/admin.py:117 part/models.py:1050 +#: common/models.py:1523 part/admin.py:117 part/models.py:1093 #: 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:1517 +#: common/models.py:1524 msgid "Parts are virtual by default" msgstr "" -#: common/models.py:1522 +#: common/models.py:1529 msgid "Show Import in Views" msgstr "" -#: common/models.py:1523 +#: common/models.py:1530 msgid "Display the import wizard in some part views" msgstr "" -#: common/models.py:1528 +#: common/models.py:1535 msgid "Show related parts" msgstr "" -#: common/models.py:1529 +#: common/models.py:1536 msgid "Display related parts for a part" msgstr "" -#: common/models.py:1534 +#: common/models.py:1541 msgid "Initial Stock Data" msgstr "" -#: common/models.py:1535 +#: common/models.py:1542 msgid "Allow creation of initial stock when adding a new part" msgstr "" -#: common/models.py:1540 templates/js/translated/part.js:107 +#: common/models.py:1547 templates/js/translated/part.js:107 msgid "Initial Supplier Data" msgstr "" -#: common/models.py:1542 +#: common/models.py:1549 msgid "Allow creation of initial supplier data when adding a new part" msgstr "" -#: common/models.py:1548 +#: common/models.py:1555 msgid "Part Name Display Format" msgstr "" -#: common/models.py:1549 +#: common/models.py:1556 msgid "Format to display the part name" msgstr "" -#: common/models.py:1555 +#: common/models.py:1562 msgid "Part Category Default Icon" msgstr "" -#: common/models.py:1556 +#: common/models.py:1563 msgid "Part category default icon (empty means no icon)" msgstr "" -#: common/models.py:1560 +#: common/models.py:1567 msgid "Enforce Parameter Units" msgstr "" -#: common/models.py:1562 +#: common/models.py:1569 msgid "If units are provided, parameter values must match the specified units" msgstr "" -#: common/models.py:1568 +#: common/models.py:1575 msgid "Minimum Pricing Decimal Places" msgstr "" -#: common/models.py:1570 +#: common/models.py:1577 msgid "Minimum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1576 +#: common/models.py:1583 msgid "Maximum Pricing Decimal Places" msgstr "" -#: common/models.py:1578 +#: common/models.py:1585 msgid "Maximum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1584 +#: common/models.py:1591 msgid "Use Supplier Pricing" msgstr "" -#: common/models.py:1586 +#: common/models.py:1593 msgid "Include supplier price breaks in overall pricing calculations" msgstr "" -#: common/models.py:1592 +#: common/models.py:1599 msgid "Purchase History Override" msgstr "" -#: common/models.py:1594 +#: common/models.py:1601 msgid "Historical purchase order pricing overrides supplier price breaks" msgstr "" -#: common/models.py:1600 +#: common/models.py:1607 msgid "Use Stock Item Pricing" msgstr "" -#: common/models.py:1602 +#: common/models.py:1609 msgid "Use pricing from manually entered stock data for pricing calculations" msgstr "" -#: common/models.py:1608 +#: common/models.py:1615 msgid "Stock Item Pricing Age" msgstr "" -#: common/models.py:1610 +#: common/models.py:1617 msgid "Exclude stock items older than this number of days from pricing calculations" msgstr "" -#: common/models.py:1617 +#: common/models.py:1624 msgid "Use Variant Pricing" msgstr "" -#: common/models.py:1618 +#: common/models.py:1625 msgid "Include variant pricing in overall pricing calculations" msgstr "" -#: common/models.py:1623 +#: common/models.py:1630 msgid "Active Variants Only" msgstr "" -#: common/models.py:1625 +#: common/models.py:1632 msgid "Only use active variant parts for calculating variant pricing" msgstr "" -#: common/models.py:1631 +#: common/models.py:1638 msgid "Pricing Rebuild Interval" msgstr "" -#: common/models.py:1633 +#: common/models.py:1640 msgid "Number of days before part pricing is automatically updated" msgstr "" -#: common/models.py:1640 +#: common/models.py:1647 msgid "Internal Prices" msgstr "" -#: common/models.py:1641 +#: common/models.py:1648 msgid "Enable internal prices for parts" msgstr "" -#: common/models.py:1646 +#: common/models.py:1653 msgid "Internal Price Override" msgstr "" -#: common/models.py:1648 +#: common/models.py:1655 msgid "If available, internal prices override price range calculations" msgstr "" -#: common/models.py:1654 +#: common/models.py:1661 msgid "Enable label printing" msgstr "" -#: common/models.py:1655 +#: common/models.py:1662 msgid "Enable label printing from the web interface" msgstr "" -#: common/models.py:1660 +#: common/models.py:1667 msgid "Label Image DPI" msgstr "" -#: common/models.py:1662 +#: common/models.py:1669 msgid "DPI resolution when generating image files to supply to label printing plugins" msgstr "" -#: common/models.py:1668 +#: common/models.py:1675 msgid "Enable Reports" msgstr "" -#: common/models.py:1669 +#: common/models.py:1676 msgid "Enable generation of reports" msgstr "" -#: common/models.py:1674 templates/stats.html:25 +#: common/models.py:1681 templates/stats.html:25 msgid "Debug Mode" msgstr "" -#: common/models.py:1675 +#: common/models.py:1682 msgid "Generate reports in debug mode (HTML output)" msgstr "" -#: common/models.py:1680 +#: common/models.py:1687 msgid "Log Report Errors" msgstr "" -#: common/models.py:1681 +#: common/models.py:1688 msgid "Log errors which occur when generating reports" msgstr "" -#: common/models.py:1686 plugin/builtin/labels/label_sheet.py:28 -#: report/models.py:203 +#: common/models.py:1693 plugin/builtin/labels/label_sheet.py:28 +#: report/models.py:301 msgid "Page Size" msgstr "" -#: common/models.py:1687 +#: common/models.py:1694 msgid "Default page size for PDF reports" msgstr "" -#: common/models.py:1692 +#: common/models.py:1699 msgid "Enable Test Reports" msgstr "" -#: common/models.py:1693 +#: common/models.py:1700 msgid "Enable generation of test reports" msgstr "" -#: common/models.py:1698 +#: common/models.py:1705 msgid "Attach Test Reports" msgstr "" -#: common/models.py:1700 +#: common/models.py:1707 msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item" msgstr "" -#: common/models.py:1706 +#: common/models.py:1713 msgid "Globally Unique Serials" msgstr "" -#: common/models.py:1707 +#: common/models.py:1714 msgid "Serial numbers for stock items must be globally unique" msgstr "" -#: common/models.py:1712 +#: common/models.py:1719 msgid "Autofill Serial Numbers" msgstr "" -#: common/models.py:1713 +#: common/models.py:1720 msgid "Autofill serial numbers in forms" msgstr "" -#: common/models.py:1718 +#: common/models.py:1725 msgid "Delete Depleted Stock" msgstr "" -#: common/models.py:1720 +#: common/models.py:1727 msgid "Determines default behavior when a stock item is depleted" msgstr "" -#: common/models.py:1726 +#: common/models.py:1733 msgid "Batch Code Template" msgstr "" -#: common/models.py:1728 +#: common/models.py:1735 msgid "Template for generating default batch codes for stock items" msgstr "" -#: common/models.py:1733 +#: common/models.py:1740 msgid "Stock Expiry" msgstr "" -#: common/models.py:1734 +#: common/models.py:1741 msgid "Enable stock expiry functionality" msgstr "" -#: common/models.py:1739 +#: common/models.py:1746 msgid "Sell Expired Stock" msgstr "" -#: common/models.py:1740 +#: common/models.py:1747 msgid "Allow sale of expired stock" msgstr "" -#: common/models.py:1745 +#: common/models.py:1752 msgid "Stock Stale Time" msgstr "" -#: common/models.py:1747 +#: common/models.py:1754 msgid "Number of days stock items are considered stale before expiring" msgstr "" -#: common/models.py:1754 +#: common/models.py:1761 msgid "Build Expired Stock" msgstr "" -#: common/models.py:1755 +#: common/models.py:1762 msgid "Allow building with expired stock" msgstr "" -#: common/models.py:1760 +#: common/models.py:1767 msgid "Stock Ownership Control" msgstr "" -#: common/models.py:1761 +#: common/models.py:1768 msgid "Enable ownership control over stock locations and items" msgstr "" -#: common/models.py:1766 +#: common/models.py:1773 msgid "Stock Location Default Icon" msgstr "" -#: common/models.py:1767 +#: common/models.py:1774 msgid "Stock location default icon (empty means no icon)" msgstr "" -#: common/models.py:1771 +#: common/models.py:1778 msgid "Show Installed Stock Items" msgstr "" -#: common/models.py:1772 +#: common/models.py:1779 msgid "Display installed stock items in stock tables" msgstr "" -#: common/models.py:1777 +#: common/models.py:1784 msgid "Check BOM when installing items" msgstr "" -#: common/models.py:1779 +#: common/models.py:1786 msgid "Installed stock items must exist in the BOM for the parent part" msgstr "" -#: common/models.py:1785 +#: common/models.py:1792 +msgid "Allow Out of Stock Transfer" +msgstr "" + +#: common/models.py:1794 +msgid "Allow stock items which are not in stock to be transferred between stock locations" +msgstr "" + +#: common/models.py:1800 msgid "Build Order Reference Pattern" msgstr "" -#: common/models.py:1787 +#: common/models.py:1802 msgid "Required pattern for generating Build Order reference field" msgstr "" -#: common/models.py:1793 common/models.py:1821 common/models.py:1843 -#: common/models.py:1871 +#: common/models.py:1808 common/models.py:1836 common/models.py:1858 +#: common/models.py:1894 msgid "Require Responsible Owner" msgstr "" -#: common/models.py:1794 common/models.py:1822 common/models.py:1844 -#: common/models.py:1872 +#: common/models.py:1809 common/models.py:1837 common/models.py:1859 +#: common/models.py:1895 msgid "A responsible owner must be assigned to each order" msgstr "" -#: common/models.py:1799 +#: common/models.py:1814 msgid "Block Until Tests Pass" msgstr "" -#: common/models.py:1801 +#: common/models.py:1816 msgid "Prevent build outputs from being completed until all required tests pass" msgstr "" -#: common/models.py:1807 +#: common/models.py:1822 msgid "Enable Return Orders" msgstr "" -#: common/models.py:1808 +#: common/models.py:1823 msgid "Enable return order functionality in the user interface" msgstr "" -#: common/models.py:1813 +#: common/models.py:1828 msgid "Return Order Reference Pattern" msgstr "" -#: common/models.py:1815 +#: common/models.py:1830 msgid "Required pattern for generating Return Order reference field" msgstr "" -#: common/models.py:1827 +#: common/models.py:1842 msgid "Edit Completed Return Orders" msgstr "" -#: common/models.py:1829 +#: common/models.py:1844 msgid "Allow editing of return orders after they have been completed" msgstr "" -#: common/models.py:1835 +#: common/models.py:1850 msgid "Sales Order Reference Pattern" msgstr "" -#: common/models.py:1837 +#: common/models.py:1852 msgid "Required pattern for generating Sales Order reference field" msgstr "" -#: common/models.py:1849 +#: common/models.py:1864 msgid "Sales Order Default Shipment" msgstr "" -#: common/models.py:1850 +#: common/models.py:1865 msgid "Enable creation of default shipment with sales orders" msgstr "" -#: common/models.py:1855 +#: common/models.py:1870 msgid "Edit Completed Sales Orders" msgstr "" -#: common/models.py:1857 +#: common/models.py:1872 msgid "Allow editing of sales orders after they have been shipped or completed" msgstr "" -#: common/models.py:1863 +#: common/models.py:1878 +#, fuzzy +#| msgid "A build order has been completed" +msgid "Mark Shipped Orders as Complete" +msgstr "Η παραγγελία κατασκευής έχει ολοκληρωθεί" + +#: common/models.py:1880 +msgid "Sales orders marked as shipped will automatically be completed, bypassing the \"shipped\" status" +msgstr "" + +#: common/models.py:1886 msgid "Purchase Order Reference Pattern" msgstr "" -#: common/models.py:1865 +#: common/models.py:1888 msgid "Required pattern for generating Purchase Order reference field" msgstr "" -#: common/models.py:1877 +#: common/models.py:1900 msgid "Edit Completed Purchase Orders" msgstr "" -#: common/models.py:1879 +#: common/models.py:1902 msgid "Allow editing of purchase orders after they have been shipped or completed" msgstr "" -#: common/models.py:1885 +#: common/models.py:1908 msgid "Auto Complete Purchase Orders" msgstr "" -#: common/models.py:1887 +#: common/models.py:1910 msgid "Automatically mark purchase orders as complete when all line items are received" msgstr "" -#: common/models.py:1894 +#: common/models.py:1917 msgid "Enable password forgot" msgstr "" -#: common/models.py:1895 +#: common/models.py:1918 msgid "Enable password forgot function on the login pages" msgstr "" -#: common/models.py:1900 +#: common/models.py:1923 msgid "Enable registration" msgstr "" -#: common/models.py:1901 +#: common/models.py:1924 msgid "Enable self-registration for users on the login pages" msgstr "" -#: common/models.py:1906 +#: common/models.py:1929 msgid "Enable SSO" msgstr "" -#: common/models.py:1907 +#: common/models.py:1930 msgid "Enable SSO on the login pages" msgstr "" -#: common/models.py:1912 +#: common/models.py:1935 msgid "Enable SSO registration" msgstr "" -#: common/models.py:1914 +#: common/models.py:1937 msgid "Enable self-registration via SSO for users on the login pages" msgstr "" -#: common/models.py:1920 +#: common/models.py:1943 msgid "Email required" msgstr "" -#: common/models.py:1921 +#: common/models.py:1944 msgid "Require user to supply mail on signup" msgstr "" -#: common/models.py:1926 +#: common/models.py:1949 msgid "Auto-fill SSO users" msgstr "" -#: common/models.py:1928 +#: common/models.py:1951 msgid "Automatically fill out user-details from SSO account-data" msgstr "" -#: common/models.py:1934 +#: common/models.py:1957 msgid "Mail twice" msgstr "" -#: common/models.py:1935 +#: common/models.py:1958 msgid "On signup ask users twice for their mail" msgstr "" -#: common/models.py:1940 +#: common/models.py:1963 msgid "Password twice" msgstr "" -#: common/models.py:1941 +#: common/models.py:1964 msgid "On signup ask users twice for their password" msgstr "" -#: common/models.py:1946 +#: common/models.py:1969 msgid "Allowed domains" msgstr "" -#: common/models.py:1948 +#: common/models.py:1971 msgid "Restrict signup to certain domains (comma-separated, starting with @)" msgstr "" -#: common/models.py:1954 +#: common/models.py:1977 msgid "Group on signup" msgstr "" -#: common/models.py:1955 +#: common/models.py:1978 msgid "Group to which new users are assigned on registration" msgstr "" -#: common/models.py:1960 +#: common/models.py:1983 msgid "Enforce MFA" msgstr "" -#: common/models.py:1961 +#: common/models.py:1984 msgid "Users must use multifactor security." msgstr "" -#: common/models.py:1966 +#: common/models.py:1989 msgid "Check plugins on startup" msgstr "" -#: common/models.py:1968 +#: common/models.py:1991 msgid "Check that all plugins are installed on startup - enable in container environments" msgstr "" -#: common/models.py:1976 +#: common/models.py:1999 msgid "Check for plugin updates" msgstr "" -#: common/models.py:1977 +#: common/models.py:2000 msgid "Enable periodic checks for updates to installed plugins" msgstr "" -#: common/models.py:1983 +#: common/models.py:2006 msgid "Enable URL integration" msgstr "" -#: common/models.py:1984 +#: common/models.py:2007 msgid "Enable plugins to add URL routes" msgstr "" -#: common/models.py:1990 +#: common/models.py:2013 msgid "Enable navigation integration" msgstr "" -#: common/models.py:1991 +#: common/models.py:2014 msgid "Enable plugins to integrate into navigation" msgstr "" -#: common/models.py:1997 +#: common/models.py:2020 msgid "Enable app integration" msgstr "" -#: common/models.py:1998 +#: common/models.py:2021 msgid "Enable plugins to add apps" msgstr "" -#: common/models.py:2004 +#: common/models.py:2027 msgid "Enable schedule integration" msgstr "" -#: common/models.py:2005 +#: common/models.py:2028 msgid "Enable plugins to run scheduled tasks" msgstr "" -#: common/models.py:2011 +#: common/models.py:2034 msgid "Enable event integration" msgstr "" -#: common/models.py:2012 +#: common/models.py:2035 msgid "Enable plugins to respond to internal events" msgstr "" -#: common/models.py:2018 +#: common/models.py:2041 msgid "Enable project codes" msgstr "" -#: common/models.py:2019 +#: common/models.py:2042 msgid "Enable project codes for tracking projects" msgstr "" -#: common/models.py:2024 +#: common/models.py:2047 msgid "Stocktake Functionality" msgstr "" -#: common/models.py:2026 +#: common/models.py:2049 msgid "Enable stocktake functionality for recording stock levels and calculating stock value" msgstr "" -#: common/models.py:2032 +#: common/models.py:2055 msgid "Exclude External Locations" msgstr "" -#: common/models.py:2034 +#: common/models.py:2057 msgid "Exclude stock items in external locations from stocktake calculations" msgstr "" -#: common/models.py:2040 +#: common/models.py:2063 msgid "Automatic Stocktake Period" msgstr "" -#: common/models.py:2042 +#: common/models.py:2065 msgid "Number of days between automatic stocktake recording (set to zero to disable)" msgstr "" -#: common/models.py:2048 +#: common/models.py:2071 msgid "Report Deletion Interval" msgstr "" -#: common/models.py:2050 +#: common/models.py:2073 msgid "Stocktake reports will be deleted after specified number of days" msgstr "" -#: common/models.py:2057 +#: common/models.py:2080 msgid "Display Users full names" msgstr "" -#: common/models.py:2058 +#: common/models.py:2081 msgid "Display Users full names instead of usernames" msgstr "" -#: common/models.py:2063 +#: common/models.py:2086 msgid "Enable Test Station Data" msgstr "" -#: common/models.py:2064 +#: common/models.py:2087 msgid "Enable test station data collection for test results" msgstr "" -#: common/models.py:2076 common/models.py:2486 +#: common/models.py:2099 common/models.py:2509 msgid "Settings key (must be unique - case insensitive" msgstr "" -#: common/models.py:2119 +#: common/models.py:2142 msgid "Hide inactive parts" msgstr "" -#: common/models.py:2121 +#: common/models.py:2144 msgid "Hide inactive parts in results displayed on the homepage" msgstr "" -#: common/models.py:2127 +#: common/models.py:2150 msgid "Show subscribed parts" msgstr "" -#: common/models.py:2128 +#: common/models.py:2151 msgid "Show subscribed parts on the homepage" msgstr "" -#: common/models.py:2133 +#: common/models.py:2156 msgid "Show subscribed categories" msgstr "" -#: common/models.py:2134 +#: common/models.py:2157 msgid "Show subscribed part categories on the homepage" msgstr "" -#: common/models.py:2139 +#: common/models.py:2162 msgid "Show latest parts" msgstr "" -#: common/models.py:2140 +#: common/models.py:2163 msgid "Show latest parts on the homepage" msgstr "" -#: common/models.py:2145 +#: common/models.py:2168 msgid "Show invalid BOMs" msgstr "" -#: common/models.py:2146 +#: common/models.py:2169 msgid "Show BOMs that await validation on the homepage" msgstr "" -#: common/models.py:2151 +#: common/models.py:2174 msgid "Show recent stock changes" msgstr "" -#: common/models.py:2152 +#: common/models.py:2175 msgid "Show recently changed stock items on the homepage" msgstr "" -#: common/models.py:2157 +#: common/models.py:2180 msgid "Show low stock" msgstr "" -#: common/models.py:2158 +#: common/models.py:2181 msgid "Show low stock items on the homepage" msgstr "" -#: common/models.py:2163 +#: common/models.py:2186 msgid "Show depleted stock" msgstr "" -#: common/models.py:2164 +#: common/models.py:2187 msgid "Show depleted stock items on the homepage" msgstr "" -#: common/models.py:2169 +#: common/models.py:2192 msgid "Show needed stock" msgstr "" -#: common/models.py:2170 +#: common/models.py:2193 msgid "Show stock items needed for builds on the homepage" msgstr "" -#: common/models.py:2175 +#: common/models.py:2198 msgid "Show expired stock" msgstr "" -#: common/models.py:2176 +#: common/models.py:2199 msgid "Show expired stock items on the homepage" msgstr "" -#: common/models.py:2181 +#: common/models.py:2204 msgid "Show stale stock" msgstr "" -#: common/models.py:2182 +#: common/models.py:2205 msgid "Show stale stock items on the homepage" msgstr "" -#: common/models.py:2187 +#: common/models.py:2210 msgid "Show pending builds" msgstr "" -#: common/models.py:2188 +#: common/models.py:2211 msgid "Show pending builds on the homepage" msgstr "" -#: common/models.py:2193 +#: common/models.py:2216 msgid "Show overdue builds" msgstr "" -#: common/models.py:2194 +#: common/models.py:2217 msgid "Show overdue builds on the homepage" msgstr "" -#: common/models.py:2199 +#: common/models.py:2222 msgid "Show outstanding POs" msgstr "" -#: common/models.py:2200 +#: common/models.py:2223 msgid "Show outstanding POs on the homepage" msgstr "" -#: common/models.py:2205 +#: common/models.py:2228 msgid "Show overdue POs" msgstr "" -#: common/models.py:2206 +#: common/models.py:2229 msgid "Show overdue POs on the homepage" msgstr "" -#: common/models.py:2211 +#: common/models.py:2234 msgid "Show outstanding SOs" msgstr "" -#: common/models.py:2212 +#: common/models.py:2235 msgid "Show outstanding SOs on the homepage" msgstr "" -#: common/models.py:2217 +#: common/models.py:2240 msgid "Show overdue SOs" msgstr "" -#: common/models.py:2218 +#: common/models.py:2241 msgid "Show overdue SOs on the homepage" msgstr "" -#: common/models.py:2223 +#: common/models.py:2246 msgid "Show pending SO shipments" msgstr "" -#: common/models.py:2224 +#: common/models.py:2247 msgid "Show pending SO shipments on the homepage" msgstr "" -#: common/models.py:2229 +#: common/models.py:2252 msgid "Show News" msgstr "" -#: common/models.py:2230 +#: common/models.py:2253 msgid "Show news on the homepage" msgstr "" -#: common/models.py:2235 +#: common/models.py:2258 msgid "Inline label display" msgstr "" -#: common/models.py:2237 +#: common/models.py:2260 msgid "Display PDF labels in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2243 +#: common/models.py:2266 msgid "Default label printer" msgstr "" -#: common/models.py:2245 +#: common/models.py:2268 msgid "Configure which label printer should be selected by default" msgstr "" -#: common/models.py:2251 +#: common/models.py:2274 msgid "Inline report display" msgstr "" -#: common/models.py:2253 +#: common/models.py:2276 msgid "Display PDF reports in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2259 +#: common/models.py:2282 msgid "Search Parts" msgstr "" -#: common/models.py:2260 +#: common/models.py:2283 msgid "Display parts in search preview window" msgstr "" -#: common/models.py:2265 +#: common/models.py:2288 msgid "Search Supplier Parts" msgstr "" -#: common/models.py:2266 +#: common/models.py:2289 msgid "Display supplier parts in search preview window" msgstr "" -#: common/models.py:2271 +#: common/models.py:2294 msgid "Search Manufacturer Parts" msgstr "" -#: common/models.py:2272 +#: common/models.py:2295 msgid "Display manufacturer parts in search preview window" msgstr "" -#: common/models.py:2277 +#: common/models.py:2300 msgid "Hide Inactive Parts" msgstr "" -#: common/models.py:2278 +#: common/models.py:2301 msgid "Excluded inactive parts from search preview window" msgstr "" -#: common/models.py:2283 +#: common/models.py:2306 msgid "Search Categories" msgstr "" -#: common/models.py:2284 +#: common/models.py:2307 msgid "Display part categories in search preview window" msgstr "" -#: common/models.py:2289 +#: common/models.py:2312 msgid "Search Stock" msgstr "" -#: common/models.py:2290 +#: common/models.py:2313 msgid "Display stock items in search preview window" msgstr "" -#: common/models.py:2295 +#: common/models.py:2318 msgid "Hide Unavailable Stock Items" msgstr "" -#: common/models.py:2297 +#: common/models.py:2320 msgid "Exclude stock items which are not available from the search preview window" msgstr "" -#: common/models.py:2303 +#: common/models.py:2326 msgid "Search Locations" msgstr "" -#: common/models.py:2304 +#: common/models.py:2327 msgid "Display stock locations in search preview window" msgstr "" -#: common/models.py:2309 +#: common/models.py:2332 msgid "Search Companies" msgstr "" -#: common/models.py:2310 +#: common/models.py:2333 msgid "Display companies in search preview window" msgstr "" -#: common/models.py:2315 +#: common/models.py:2338 msgid "Search Build Orders" msgstr "" -#: common/models.py:2316 +#: common/models.py:2339 msgid "Display build orders in search preview window" msgstr "" -#: common/models.py:2321 +#: common/models.py:2344 msgid "Search Purchase Orders" msgstr "" -#: common/models.py:2322 +#: common/models.py:2345 msgid "Display purchase orders in search preview window" msgstr "" -#: common/models.py:2327 +#: common/models.py:2350 msgid "Exclude Inactive Purchase Orders" msgstr "" -#: common/models.py:2329 +#: common/models.py:2352 msgid "Exclude inactive purchase orders from search preview window" msgstr "" -#: common/models.py:2335 +#: common/models.py:2358 msgid "Search Sales Orders" msgstr "" -#: common/models.py:2336 +#: common/models.py:2359 msgid "Display sales orders in search preview window" msgstr "" -#: common/models.py:2341 +#: common/models.py:2364 msgid "Exclude Inactive Sales Orders" msgstr "" -#: common/models.py:2343 +#: common/models.py:2366 msgid "Exclude inactive sales orders from search preview window" msgstr "" -#: common/models.py:2349 +#: common/models.py:2372 msgid "Search Return Orders" msgstr "" -#: common/models.py:2350 +#: common/models.py:2373 msgid "Display return orders in search preview window" msgstr "" -#: common/models.py:2355 +#: common/models.py:2378 msgid "Exclude Inactive Return Orders" msgstr "" -#: common/models.py:2357 +#: common/models.py:2380 msgid "Exclude inactive return orders from search preview window" msgstr "" -#: common/models.py:2363 +#: common/models.py:2386 msgid "Search Preview Results" msgstr "" -#: common/models.py:2365 +#: common/models.py:2388 msgid "Number of results to show in each section of the search preview window" msgstr "" -#: common/models.py:2371 +#: common/models.py:2394 msgid "Regex Search" msgstr "" -#: common/models.py:2372 +#: common/models.py:2395 msgid "Enable regular expressions in search queries" msgstr "" -#: common/models.py:2377 +#: common/models.py:2400 msgid "Whole Word Search" msgstr "" -#: common/models.py:2378 +#: common/models.py:2401 msgid "Search queries return results for whole word matches" msgstr "" -#: common/models.py:2383 +#: common/models.py:2406 msgid "Show Quantity in Forms" msgstr "" -#: common/models.py:2384 +#: common/models.py:2407 msgid "Display available part quantity in some forms" msgstr "" -#: common/models.py:2389 +#: common/models.py:2412 msgid "Escape Key Closes Forms" msgstr "" -#: common/models.py:2390 +#: common/models.py:2413 msgid "Use the escape key to close modal forms" msgstr "" -#: common/models.py:2395 +#: common/models.py:2418 msgid "Fixed Navbar" msgstr "" -#: common/models.py:2396 +#: common/models.py:2419 msgid "The navbar position is fixed to the top of the screen" msgstr "" -#: common/models.py:2401 +#: common/models.py:2424 msgid "Date Format" msgstr "" -#: common/models.py:2402 +#: common/models.py:2425 msgid "Preferred format for displaying dates" msgstr "" -#: common/models.py:2415 part/templates/part/detail.html:41 +#: common/models.py:2438 part/templates/part/detail.html:41 msgid "Part Scheduling" msgstr "" -#: common/models.py:2416 +#: common/models.py:2439 msgid "Display part scheduling information" msgstr "" -#: common/models.py:2421 part/templates/part/detail.html:62 +#: common/models.py:2444 part/templates/part/detail.html:62 msgid "Part Stocktake" msgstr "" -#: common/models.py:2423 +#: common/models.py:2446 msgid "Display part stocktake information (if stocktake functionality is enabled)" msgstr "" -#: common/models.py:2429 +#: common/models.py:2452 msgid "Table String Length" msgstr "" -#: common/models.py:2431 +#: common/models.py:2454 msgid "Maximum length limit for strings displayed in table views" msgstr "" -#: common/models.py:2437 +#: common/models.py:2460 msgid "Default part label template" msgstr "" -#: common/models.py:2438 +#: common/models.py:2461 msgid "The part label template to be automatically selected" msgstr "" -#: common/models.py:2443 +#: common/models.py:2466 msgid "Default stock item template" msgstr "" -#: common/models.py:2445 +#: common/models.py:2468 msgid "The stock item label template to be automatically selected" msgstr "" -#: common/models.py:2451 +#: common/models.py:2474 msgid "Default stock location label template" msgstr "" -#: common/models.py:2453 +#: common/models.py:2476 msgid "The stock location label template to be automatically selected" msgstr "" -#: common/models.py:2459 +#: common/models.py:2482 msgid "Default build line label template" msgstr "" -#: common/models.py:2461 +#: common/models.py:2484 msgid "The build line label template to be automatically selected" msgstr "" -#: common/models.py:2467 +#: common/models.py:2490 msgid "Receive error reports" msgstr "" -#: common/models.py:2468 +#: common/models.py:2491 msgid "Receive notifications for system errors" msgstr "" -#: common/models.py:2473 +#: common/models.py:2496 msgid "Last used printing machines" msgstr "" -#: common/models.py:2474 +#: common/models.py:2497 msgid "Save the last used printing machines for a user" msgstr "" -#: common/models.py:2517 +#: common/models.py:2540 msgid "Price break quantity" msgstr "" -#: common/models.py:2524 company/serializers.py:496 order/admin.py:42 -#: order/models.py:1333 order/models.py:2241 +#: common/models.py:2547 company/serializers.py:496 order/admin.py:42 +#: order/models.py:1382 order/models.py:2301 #: templates/js/translated/company.js:1823 templates/js/translated/part.js:1885 #: templates/js/translated/pricing.js:621 -#: templates/js/translated/return_order.js:741 +#: templates/js/translated/return_order.js:740 msgid "Price" msgstr "" -#: common/models.py:2525 +#: common/models.py:2548 msgid "Unit price at specified quantity" msgstr "" -#: common/models.py:2696 common/models.py:2881 +#: common/models.py:2719 common/models.py:2904 msgid "Endpoint" msgstr "" -#: common/models.py:2697 +#: common/models.py:2720 msgid "Endpoint at which this webhook is received" msgstr "" -#: common/models.py:2707 +#: common/models.py:2730 msgid "Name for this webhook" msgstr "" -#: common/models.py:2711 company/models.py:160 company/models.py:813 -#: machine/models.py:39 part/admin.py:88 part/models.py:1045 -#: plugin/models.py:56 templates/js/translated/company.js:523 +#: common/models.py:2734 company/models.py:160 company/models.py:814 +#: machine/models.py:39 part/admin.py:88 part/models.py:1088 +#: plugin/models.py:65 templates/js/translated/company.js:523 #: templates/js/translated/table_filters.js:135 #: templates/js/translated/table_filters.js:219 #: templates/js/translated/table_filters.js:492 @@ -3586,135 +3464,135 @@ msgstr "" msgid "Active" msgstr "" -#: common/models.py:2711 +#: common/models.py:2734 msgid "Is this webhook active" msgstr "" -#: common/models.py:2727 users/models.py:159 +#: common/models.py:2750 users/models.py:159 msgid "Token" msgstr "" -#: common/models.py:2728 +#: common/models.py:2751 msgid "Token for access" msgstr "" -#: common/models.py:2736 +#: common/models.py:2759 msgid "Secret" msgstr "" -#: common/models.py:2737 +#: common/models.py:2760 msgid "Shared secret for HMAC" msgstr "" -#: common/models.py:2845 +#: common/models.py:2868 msgid "Message ID" msgstr "" -#: common/models.py:2846 +#: common/models.py:2869 msgid "Unique identifier for this message" msgstr "" -#: common/models.py:2854 +#: common/models.py:2877 msgid "Host" msgstr "" -#: common/models.py:2855 +#: common/models.py:2878 msgid "Host from which this message was received" msgstr "" -#: common/models.py:2863 +#: common/models.py:2886 msgid "Header" msgstr "" -#: common/models.py:2864 +#: common/models.py:2887 msgid "Header of this message" msgstr "" -#: common/models.py:2871 +#: common/models.py:2894 msgid "Body" msgstr "" -#: common/models.py:2872 +#: common/models.py:2895 msgid "Body of this message" msgstr "" -#: common/models.py:2882 +#: common/models.py:2905 msgid "Endpoint on which this message was received" msgstr "" -#: common/models.py:2887 +#: common/models.py:2910 msgid "Worked on" msgstr "" -#: common/models.py:2888 +#: common/models.py:2911 msgid "Was the work on this message finished?" msgstr "" -#: common/models.py:3014 +#: common/models.py:3037 msgid "Id" msgstr "" -#: common/models.py:3016 templates/js/translated/company.js:965 +#: common/models.py:3039 templates/js/translated/company.js:965 #: templates/js/translated/news.js:44 msgid "Title" msgstr "" -#: common/models.py:3020 templates/js/translated/news.js:60 +#: common/models.py:3043 templates/js/translated/news.js:60 msgid "Published" msgstr "" -#: common/models.py:3022 templates/InvenTree/settings/plugin_settings.html:32 +#: common/models.py:3045 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:3024 templates/js/translated/news.js:52 +#: common/models.py:3047 templates/js/translated/news.js:52 msgid "Summary" msgstr "" -#: common/models.py:3027 +#: common/models.py:3050 msgid "Read" msgstr "" -#: common/models.py:3027 +#: common/models.py:3050 msgid "Was this news item read?" msgstr "" -#: common/models.py:3044 company/models.py:156 part/models.py:929 +#: common/models.py:3067 company/models.py:156 part/models.py:972 #: 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 +#: report/templates/report/inventree_return_order_report.html:35 #: stock/templates/stock/item_base.html:133 templates/503.html:31 #: templates/hover_image.html:7 templates/hover_image.html:9 #: templates/modals.html:6 msgid "Image" msgstr "" -#: common/models.py:3044 +#: common/models.py:3067 msgid "Image file" msgstr "" -#: common/models.py:3086 +#: common/models.py:3109 msgid "Unit name must be a valid identifier" msgstr "" -#: common/models.py:3105 +#: common/models.py:3128 msgid "Unit name" msgstr "" -#: common/models.py:3112 templates/InvenTree/settings/settings_staff_js.html:75 +#: common/models.py:3135 templates/InvenTree/settings/settings_staff_js.html:75 msgid "Symbol" msgstr "" -#: common/models.py:3113 +#: common/models.py:3136 msgid "Optional unit symbol" msgstr "" -#: common/models.py:3120 templates/InvenTree/settings/settings_staff_js.html:71 +#: common/models.py:3143 templates/InvenTree/settings/settings_staff_js.html:71 msgid "Definition" msgstr "" -#: common/models.py:3121 +#: common/models.py:3144 msgid "Unit definition" msgstr "" @@ -3736,7 +3614,7 @@ msgstr "" msgid "A order that is assigned to you was canceled" msgstr "" -#: common/notifications.py:330 common/notifications.py:337 order/api.py:468 +#: common/notifications.py:330 common/notifications.py:337 order/api.py:472 msgid "Items Received" msgstr "" @@ -3752,63 +3630,63 @@ msgstr "" msgid "Error raised by plugin" msgstr "" -#: common/serializers.py:333 +#: common/serializers.py:366 msgid "Is Running" msgstr "" -#: common/serializers.py:339 +#: common/serializers.py:372 msgid "Pending Tasks" msgstr "" -#: common/serializers.py:345 +#: common/serializers.py:378 msgid "Scheduled Tasks" msgstr "" -#: common/serializers.py:351 +#: common/serializers.py:384 msgid "Failed Tasks" msgstr "" -#: common/serializers.py:366 +#: common/serializers.py:399 msgid "Task ID" msgstr "" -#: common/serializers.py:366 +#: common/serializers.py:399 msgid "Unique task ID" msgstr "" -#: common/serializers.py:368 +#: common/serializers.py:401 msgid "Lock" msgstr "" -#: common/serializers.py:368 +#: common/serializers.py:401 msgid "Lock time" msgstr "" -#: common/serializers.py:370 +#: common/serializers.py:403 msgid "Task name" msgstr "" -#: common/serializers.py:372 +#: common/serializers.py:405 msgid "Function" msgstr "" -#: common/serializers.py:372 +#: common/serializers.py:405 msgid "Function name" msgstr "" -#: common/serializers.py:374 +#: common/serializers.py:407 msgid "Arguments" msgstr "" -#: common/serializers.py:374 +#: common/serializers.py:407 msgid "Task arguments" msgstr "" -#: common/serializers.py:377 +#: common/serializers.py:410 msgid "Keyword Arguments" msgstr "" -#: common/serializers.py:377 +#: common/serializers.py:410 msgid "Task keyword arguments" msgstr "" @@ -3901,9 +3779,9 @@ msgid "Contact email address" msgstr "" #: company/models.py:139 company/templates/company/company_base.html:145 -#: order/models.py:331 order/templates/order/order_base.html:203 +#: order/models.py:343 order/templates/order/order_base.html:203 #: order/templates/order/return_order_base.html:174 -#: order/templates/order/sales_order_base.html:214 +#: order/templates/order/sales_order_base.html:218 msgid "Contact" msgstr "" @@ -3949,7 +3827,7 @@ msgstr "" #: company/models.py:273 company/models.py:382 #: company/templates/company/company_base.html:8 -#: company/templates/company/company_base.html:12 stock/api.py:776 +#: company/templates/company/company_base.html:12 stock/api.py:812 #: templates/InvenTree/search.html:178 templates/js/translated/company.js:496 msgid "Company" msgstr "" @@ -4041,19 +3919,19 @@ msgstr "" msgid "Link to address information (external)" msgstr "" -#: company/models.py:489 company/models.py:791 stock/models.py:751 -#: stock/serializers.py:266 stock/templates/stock/item_base.html:142 +#: company/models.py:489 company/models.py:792 stock/models.py:768 +#: stock/serializers.py:395 stock/templates/stock/item_base.html:142 #: templates/js/translated/bom.js:622 msgid "Base Part" msgstr "" -#: company/models.py:491 company/models.py:793 +#: company/models.py:491 company/models.py:794 msgid "Select part" msgstr "" #: company/models.py:500 company/templates/company/company_base.html:82 #: company/templates/company/manufacturer_part.html:90 -#: company/templates/company/supplier_part.html:145 part/serializers.py:515 +#: company/templates/company/supplier_part.html:145 part/serializers.py:530 #: stock/templates/stock/item_base.html:207 #: templates/js/translated/company.js:507 #: templates/js/translated/company.js:1118 @@ -4068,13 +3946,13 @@ msgid "Select manufacturer" msgstr "" #: company/models.py:507 company/templates/company/manufacturer_part.html:101 -#: company/templates/company/supplier_part.html:153 part/serializers.py:525 +#: company/templates/company/supplier_part.html:153 part/serializers.py:540 #: templates/js/translated/company.js:351 #: templates/js/translated/company.js:1117 #: templates/js/translated/company.js:1312 #: templates/js/translated/company.js:1630 templates/js/translated/part.js:1800 -#: templates/js/translated/purchase_order.js:1852 -#: templates/js/translated/purchase_order.js:2054 +#: templates/js/translated/purchase_order.js:1851 +#: templates/js/translated/purchase_order.js:2053 msgid "MPN" msgstr "" @@ -4086,61 +3964,60 @@ msgstr "" msgid "URL for external manufacturer part link" msgstr "" -#: company/models.py:523 +#: company/models.py:524 msgid "Manufacturer part description" msgstr "" -#: company/models.py:580 company/models.py:607 company/models.py:823 +#: company/models.py:581 company/models.py:608 company/models.py:824 #: company/templates/company/manufacturer_part.html:7 #: company/templates/company/manufacturer_part.html:24 #: stock/templates/stock/item_base.html:217 msgid "Manufacturer Part" msgstr "" -#: company/models.py:614 +#: company/models.py:615 msgid "Parameter name" msgstr "" -#: company/models.py:620 -#: report/templates/report/inventree_test_report_base.html:104 -#: stock/models.py:2436 templates/js/translated/company.js:1166 +#: company/models.py:621 report/templates/report/inventree_test_report.html:104 +#: stock/models.py:2429 templates/js/translated/company.js:1166 #: templates/js/translated/company.js:1419 templates/js/translated/part.js:1492 -#: templates/js/translated/stock.js:1519 +#: templates/js/translated/stock.js:1522 msgid "Value" msgstr "" -#: company/models.py:621 +#: company/models.py:622 msgid "Parameter value" msgstr "" -#: company/models.py:628 company/templates/company/supplier_part.html:168 -#: part/admin.py:57 part/models.py:1009 part/models.py:3623 +#: company/models.py:629 company/templates/company/supplier_part.html:168 +#: part/admin.py:57 part/models.py:1052 part/models.py:3666 #: part/templates/part/part_base.html:284 #: templates/js/translated/company.js:1425 templates/js/translated/part.js:1511 -#: templates/js/translated/part.js:1615 templates/js/translated/part.js:2370 +#: templates/js/translated/part.js:1615 templates/js/translated/part.js:2369 msgid "Units" msgstr "" -#: company/models.py:629 +#: company/models.py:630 msgid "Parameter units" msgstr "" -#: company/models.py:731 +#: company/models.py:732 msgid "Pack units must be compatible with the base part units" msgstr "" -#: company/models.py:738 +#: company/models.py:739 msgid "Pack units must be greater than zero" msgstr "" -#: company/models.py:752 +#: company/models.py:753 msgid "Linked manufacturer part must reference the same base part" msgstr "" -#: company/models.py:801 company/templates/company/company_base.html:87 -#: company/templates/company/supplier_part.html:129 order/models.py:465 +#: company/models.py:802 company/templates/company/company_base.html:87 +#: company/templates/company/supplier_part.html:129 order/models.py:486 #: order/templates/order/order_base.html:136 part/bom.py:272 part/bom.py:310 -#: part/serializers.py:499 plugin/builtin/suppliers/digikey.py:25 +#: part/serializers.py:514 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 @@ -4148,97 +4025,97 @@ msgstr "" #: templates/js/translated/company.js:511 #: templates/js/translated/company.js:1584 templates/js/translated/part.js:1768 #: templates/js/translated/pricing.js:498 -#: templates/js/translated/purchase_order.js:1690 +#: templates/js/translated/purchase_order.js:1689 #: templates/js/translated/table_filters.js:804 msgid "Supplier" msgstr "" -#: company/models.py:802 +#: company/models.py:803 msgid "Select supplier" msgstr "" -#: company/models.py:808 part/serializers.py:510 +#: company/models.py:809 part/serializers.py:525 msgid "Supplier stock keeping unit" msgstr "" -#: company/models.py:814 +#: company/models.py:815 msgid "Is this supplier part active?" msgstr "" -#: company/models.py:824 +#: company/models.py:825 msgid "Select manufacturer part" msgstr "" -#: company/models.py:831 +#: company/models.py:832 msgid "URL for external supplier part link" msgstr "" -#: company/models.py:839 +#: company/models.py:841 msgid "Supplier part description" msgstr "" -#: company/models.py:846 company/templates/company/supplier_part.html:187 -#: part/admin.py:418 part/models.py:4070 part/templates/part/upload_bom.html:59 +#: company/models.py:848 company/templates/company/supplier_part.html:187 +#: part/admin.py:420 part/models.py:4113 part/templates/part/upload_bom.html:59 #: 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 +#: report/templates/report/inventree_purchase_order_report.html:32 +#: report/templates/report/inventree_return_order_report.html:27 +#: report/templates/report/inventree_sales_order_report.html:32 +#: report/templates/report/inventree_stock_location_report.html:105 +#: stock/serializers.py:708 msgid "Note" msgstr "" -#: company/models.py:855 part/models.py:1967 +#: company/models.py:857 part/models.py:2010 msgid "base cost" msgstr "" -#: company/models.py:856 part/models.py:1968 +#: company/models.py:858 part/models.py:2011 msgid "Minimum charge (e.g. stocking fee)" msgstr "" -#: company/models.py:863 company/templates/company/supplier_part.html:160 -#: stock/admin.py:224 stock/models.py:782 stock/serializers.py:1350 +#: company/models.py:865 company/templates/company/supplier_part.html:160 +#: stock/admin.py:224 stock/models.py:799 stock/serializers.py:1479 #: stock/templates/stock/item_base.html:240 #: templates/js/translated/company.js:1646 -#: templates/js/translated/stock.js:2423 +#: templates/js/translated/stock.js:2424 msgid "Packaging" msgstr "" -#: company/models.py:864 +#: company/models.py:866 msgid "Part packaging" msgstr "" -#: company/models.py:869 templates/js/translated/company.js:1651 +#: company/models.py:871 templates/js/translated/company.js:1651 #: 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 +#: templates/js/translated/purchase_order.js:2084 +#: templates/js/translated/purchase_order.js:2101 msgid "Pack Quantity" msgstr "" -#: company/models.py:871 +#: company/models.py:873 msgid "Total quantity supplied in a single pack. Leave empty for single items." msgstr "" -#: company/models.py:890 part/models.py:1974 +#: company/models.py:892 part/models.py:2017 msgid "multiple" msgstr "" -#: company/models.py:891 +#: company/models.py:893 msgid "Order multiple" msgstr "" -#: company/models.py:903 +#: company/models.py:905 msgid "Quantity available from supplier" msgstr "" -#: company/models.py:909 +#: company/models.py:911 msgid "Availability Updated" msgstr "" -#: company/models.py:910 +#: company/models.py:912 msgid "Date of last update of availability data" msgstr "" @@ -4257,7 +4134,7 @@ msgstr "" #: part/templates/part/part_base.html:146 #: templates/js/translated/company.js:1287 #: templates/js/translated/company.js:1575 -#: templates/js/translated/model_renderers.js:306 +#: templates/js/translated/model_renderers.js:312 #: templates/js/translated/part.js:814 templates/js/translated/part.js:1218 msgid "Inactive" msgstr "" @@ -4293,11 +4170,11 @@ msgstr "" #: 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 +#: report/templates/report/inventree_build_order_report.html:98 +#: report/templates/report/inventree_purchase_order_report.html:40 +#: report/templates/report/inventree_sales_order_report.html:40 +#: report/templates/report/inventree_test_report.html:84 +#: report/templates/report/inventree_test_report.html:163 msgid "Part image" msgstr "" @@ -4316,15 +4193,15 @@ msgstr "" msgid "Delete image" msgstr "" -#: company/templates/company/company_base.html:92 order/models.py:910 -#: order/models.py:2008 order/templates/order/return_order_base.html:131 -#: order/templates/order/sales_order_base.html:144 stock/models.py:804 -#: stock/models.py:805 stock/serializers.py:1100 +#: company/templates/company/company_base.html:92 order/models.py:940 +#: order/models.py:2068 order/templates/order/return_order_base.html:131 +#: order/templates/order/sales_order_base.html:148 stock/models.py:821 +#: stock/models.py:822 stock/serializers.py:1229 #: stock/templates/stock/item_base.html:405 #: templates/email/overdue_sales_order.html:16 #: templates/js/translated/company.js:503 -#: templates/js/translated/return_order.js:296 -#: templates/js/translated/sales_order.js:784 +#: templates/js/translated/return_order.js:295 +#: templates/js/translated/sales_order.js:820 #: templates/js/translated/stock.js:2959 #: templates/js/translated/table_filters.js:808 msgid "Customer" @@ -4334,10 +4211,10 @@ msgstr "" msgid "Uses default currency" msgstr "" -#: company/templates/company/company_base.html:124 order/models.py:341 +#: company/templates/company/company_base.html:124 order/models.py:353 #: order/templates/order/order_base.html:210 #: order/templates/order/return_order_base.html:181 -#: order/templates/order/sales_order_base.html:221 +#: order/templates/order/sales_order_base.html:225 msgid "Address" msgstr "" @@ -4346,7 +4223,7 @@ msgid "Phone" msgstr "" #: company/templates/company/company_base.html:211 -#: part/templates/part/part_base.html:528 +#: part/templates/part/part_base.html:527 msgid "Remove Image" msgstr "" @@ -4355,19 +4232,19 @@ msgid "Remove associated image from this company" msgstr "" #: company/templates/company/company_base.html:214 -#: part/templates/part/part_base.html:531 +#: part/templates/part/part_base.html:530 #: templates/InvenTree/settings/user.html:88 #: templates/InvenTree/settings/user_sso.html:43 msgid "Remove" msgstr "" #: company/templates/company/company_base.html:243 -#: part/templates/part/part_base.html:560 +#: part/templates/part/part_base.html:559 msgid "Upload Image" msgstr "" #: company/templates/company/company_base.html:258 -#: part/templates/part/part_base.html:614 +#: part/templates/part/part_base.html:613 msgid "Download Image" msgstr "" @@ -4520,7 +4397,7 @@ msgid "Delete manufacturer part" msgstr "" #: company/templates/company/manufacturer_part.html:65 -#: company/templates/company/supplier_part.html:97 order/api.py:454 +#: company/templates/company/supplier_part.html:97 order/api.py:458 msgid "Internal Part" msgstr "" @@ -4530,7 +4407,7 @@ msgstr "" #: company/templates/company/manufacturer_part.html:119 #: company/templates/company/supplier_part.html:15 company/views.py:31 -#: part/admin.py:122 part/serializers.py:821 +#: part/admin.py:122 part/serializers.py:836 #: part/templates/part/part_sidebar.html:33 templates/InvenTree/search.html:190 #: templates/navbar.html:48 msgid "Suppliers" @@ -4580,11 +4457,11 @@ msgid "Addresses" msgstr "" #: company/templates/company/supplier_part.html:7 -#: company/templates/company/supplier_part.html:24 order/api.py:448 -#: stock/models.py:762 stock/templates/stock/item_base.html:233 +#: company/templates/company/supplier_part.html:24 order/api.py:452 +#: stock/models.py:779 stock/templates/stock/item_base.html:233 #: templates/js/translated/company.js:1600 #: templates/js/translated/purchase_order.js:752 -#: templates/js/translated/stock.js:2279 +#: templates/js/translated/stock.js:2280 msgid "Supplier Part" msgstr "" @@ -4630,11 +4507,11 @@ 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 +#: part/bom.py:311 part/serializers.py:524 #: 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 +#: templates/js/translated/purchase_order.js:1850 +#: templates/js/translated/purchase_order.js:2028 msgid "SKU" msgstr "" @@ -4643,12 +4520,12 @@ msgid "Supplier Part Stock" msgstr "" #: company/templates/company/supplier_part.html:209 -#: part/templates/part/detail.html:24 stock/templates/stock/location.html:199 +#: part/templates/part/detail.html:24 stock/templates/stock/location.html:206 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 +#: part/templates/part/detail.html:25 stock/templates/stock/location.html:207 #: templates/js/translated/stock.js:537 msgid "New Stock Item" msgstr "" @@ -4680,13 +4557,13 @@ msgid "Update Part Availability" msgstr "" #: company/templates/company/supplier_part_sidebar.html:5 -#: part/serializers.py:820 part/stocktake.py:223 +#: part/serializers.py:835 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/serializers.py:916 stock/serializers.py:1080 #: stock/templates/stock/location.html:170 -#: stock/templates/stock/location.html:184 -#: stock/templates/stock/location.html:196 +#: stock/templates/stock/location.html:191 +#: stock/templates/stock/location.html:203 #: stock/templates/stock/location_sidebar.html:7 #: templates/InvenTree/search.html:155 templates/js/translated/part.js:1060 #: templates/js/translated/search.js:172 templates/js/translated/stock.js:2766 @@ -4723,126 +4600,52 @@ msgstr "" msgid "New Company" msgstr "" -#: label/api.py:247 -msgid "Error printing label" -msgstr "" +#: generic/states/tests.py:18 order/status_codes.py:13 +msgid "Placed" +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:3494 report/models.py:324 -#: 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:317 -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:345 report/models.py:496 -#: report/models.py:532 report/models.py:568 report/models.py:750 -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 +#: machine/machine_types/label_printer.py:218 msgid "Copies" msgstr "" -#: machine/machine_types/label_printer.py:218 +#: machine/machine_types/label_printer.py:219 msgid "Number of copies to print for each label" msgstr "" -#: machine/machine_types/label_printer.py:233 +#: machine/machine_types/label_printer.py:234 msgid "Connected" msgstr "" -#: machine/machine_types/label_printer.py:234 order/api.py:1511 -#: templates/js/translated/sales_order.js:1042 +#: machine/machine_types/label_printer.py:235 order/api.py:1515 +#: templates/js/translated/sales_order.js:1078 msgid "Unknown" msgstr "" -#: machine/machine_types/label_printer.py:235 +#: machine/machine_types/label_printer.py:236 msgid "Printing" msgstr "" -#: machine/machine_types/label_printer.py:236 +#: machine/machine_types/label_printer.py:237 msgid "No media" msgstr "" -#: machine/machine_types/label_printer.py:237 +#: machine/machine_types/label_printer.py:238 msgid "Disconnected" msgstr "" -#: machine/machine_types/label_printer.py:244 +#: machine/machine_types/label_printer.py:245 msgid "Label Printer" msgstr "" -#: machine/machine_types/label_printer.py:245 +#: machine/machine_types/label_printer.py:246 msgid "Directly print labels for various items." msgstr "" -#: machine/machine_types/label_printer.py:251 +#: machine/machine_types/label_printer.py:252 msgid "Printer Location" msgstr "" -#: machine/machine_types/label_printer.py:252 +#: machine/machine_types/label_printer.py:253 msgid "Scope the printer to a specific location" msgstr "" @@ -4903,63 +4706,64 @@ 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 +#: report/templates/report/inventree_purchase_order_report.html:31 +#: report/templates/report/inventree_sales_order_report.html:31 #: templates/js/translated/order.js:327 -#: templates/js/translated/purchase_order.js:2126 -#: templates/js/translated/sales_order.js:1847 +#: templates/js/translated/purchase_order.js:2125 +#: templates/js/translated/sales_order.js:1883 msgid "Total Price" msgstr "" -#: order/api.py:157 order/templates/order/order_base.html:118 +#: order/api.py:161 order/serializers.py:91 +#: order/templates/order/order_base.html:118 #: order/templates/order/return_order_base.html:113 -#: order/templates/order/sales_order_base.html:118 +#: order/templates/order/sales_order_base.html:122 msgid "Order Status" msgstr "" -#: order/api.py:161 templates/js/translated/table_filters.js:194 +#: order/api.py:165 templates/js/translated/table_filters.js:194 #: templates/js/translated/table_filters.js:779 msgid "Has Pricing" msgstr "" -#: order/api.py:236 +#: order/api.py:240 msgid "No matching purchase order found" msgstr "" -#: order/api.py:433 order/api.py:813 order/models.py:1382 order/models.py:1489 -#: order/models.py:1535 order/models.py:1649 order/models.py:1803 -#: order/models.py:2207 order/models.py:2258 -#: templates/js/translated/sales_order.js:1488 +#: order/api.py:437 order/api.py:817 order/models.py:1431 order/models.py:1540 +#: order/models.py:1586 order/models.py:1700 order/models.py:1854 +#: order/models.py:2267 order/models.py:2318 +#: templates/js/translated/sales_order.js:1524 msgid "Order" msgstr "" -#: order/api.py:437 order/api.py:834 +#: order/api.py:441 order/api.py:838 msgid "Order Complete" msgstr "" -#: order/api.py:458 +#: order/api.py:462 msgid "Order Pending" msgstr "" -#: order/api.py:1505 order/models.py:1383 order/models.py:1490 -#: order/templates/order/order_base.html:9 +#: order/api.py:1509 order/models.py:380 order/models.py:1432 +#: order/models.py:1541 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 +#: report/templates/report/inventree_purchase_order_report.html:14 +#: stock/serializers.py:119 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 +#: templates/js/translated/purchase_order.js:1673 +#: templates/js/translated/stock.js:2260 templates/js/translated/stock.js:2907 msgid "Purchase Order" msgstr "" -#: order/api.py:1509 order/models.py:2208 order/models.py:2259 -#: order/templates/order/return_order_base.html:9 +#: order/api.py:1513 order/models.py:2017 order/models.py:2268 +#: order/models.py:2319 order/templates/order/return_order_base.html:9 #: order/templates/order/return_order_base.html:28 -#: report/templates/report/inventree_return_order_report_base.html:13 -#: templates/js/translated/return_order.js:281 +#: report/templates/report/inventree_return_order_report.html:13 +#: templates/js/translated/return_order.js:280 #: templates/js/translated/stock.js:2941 msgid "Return Order" msgstr "" @@ -4976,517 +4780,575 @@ msgstr "" msgid "Currency for this order (leave blank to use company default)" msgstr "" -#: order/models.py:246 +#: order/models.py:247 msgid "Contact does not match selected company" msgstr "" -#: order/models.py:278 +#: order/models.py:290 msgid "Order description (optional)" msgstr "" -#: order/models.py:287 +#: order/models.py:299 msgid "Select project code for this order" msgstr "" -#: order/models.py:291 order/models.py:1288 order/models.py:1702 +#: order/models.py:303 order/models.py:1337 order/models.py:1753 msgid "Link to external page" msgstr "" -#: order/models.py:299 +#: order/models.py:311 msgid "Expected date for order delivery. Order will be overdue after this date." msgstr "" -#: order/models.py:313 +#: order/models.py:325 msgid "Created By" msgstr "" -#: order/models.py:321 +#: order/models.py:333 msgid "User or group responsible for this order" msgstr "" -#: order/models.py:332 +#: order/models.py:344 msgid "Point of contact for this order" msgstr "" -#: order/models.py:342 +#: order/models.py:354 msgid "Company address for this order" msgstr "" -#: order/models.py:443 order/models.py:899 +#: order/models.py:464 order/models.py:929 msgid "Order reference" msgstr "" -#: order/models.py:451 order/models.py:923 +#: order/models.py:472 order/models.py:953 msgid "Purchase order status" msgstr "" -#: order/models.py:466 +#: order/models.py:487 msgid "Company from which the items are being ordered" msgstr "" -#: order/models.py:477 order/templates/order/order_base.html:148 -#: templates/js/translated/purchase_order.js:1703 +#: order/models.py:498 order/templates/order/order_base.html:148 +#: templates/js/translated/purchase_order.js:1702 msgid "Supplier Reference" msgstr "" -#: order/models.py:478 +#: order/models.py:499 msgid "Supplier order reference code" msgstr "" -#: order/models.py:487 +#: order/models.py:508 msgid "received by" msgstr "" -#: order/models.py:493 order/models.py:2034 +#: order/models.py:514 order/models.py:2094 msgid "Issue Date" msgstr "" -#: order/models.py:494 order/models.py:2035 +#: order/models.py:515 order/models.py:2095 msgid "Date order was issued" msgstr "" -#: order/models.py:501 order/models.py:2042 +#: order/models.py:522 order/models.py:2102 msgid "Date order was completed" msgstr "" -#: order/models.py:545 +#: order/models.py:566 msgid "Part supplier must match PO supplier" msgstr "" -#: order/models.py:739 +#: order/models.py:760 msgid "Quantity must be a positive number" msgstr "" -#: order/models.py:911 +#: order/models.py:941 msgid "Company to which the items are being sold" msgstr "" -#: order/models.py:934 order/models.py:2027 +#: order/models.py:964 order/models.py:2087 msgid "Customer Reference " msgstr "" -#: order/models.py:935 order/models.py:2028 +#: order/models.py:965 order/models.py:2088 msgid "Customer order reference code" msgstr "" -#: order/models.py:939 order/models.py:1656 -#: templates/js/translated/sales_order.js:843 -#: templates/js/translated/sales_order.js:1024 +#: order/models.py:969 order/models.py:1707 +#: templates/js/translated/sales_order.js:879 +#: templates/js/translated/sales_order.js:1060 msgid "Shipment Date" msgstr "" -#: order/models.py:948 +#: order/models.py:978 msgid "shipped by" msgstr "" -#: order/models.py:999 -msgid "Order cannot be completed as no parts have been assigned" +#: order/models.py:1027 +#, fuzzy +#| msgid "Build output is already completed" +msgid "Order is already complete" +msgstr "Η παραγγελία κατασκευής έχει ολοκληρωθεί" + +#: order/models.py:1030 +msgid "Order is already cancelled" msgstr "" -#: order/models.py:1004 +#: order/models.py:1034 msgid "Only an open order can be marked as complete" msgstr "" -#: order/models.py:1008 templates/js/translated/sales_order.js:506 +#: order/models.py:1038 msgid "Order cannot be completed as there are incomplete shipments" msgstr "" -#: order/models.py:1013 +#: order/models.py:1043 msgid "Order cannot be completed as there are incomplete line items" msgstr "" -#: order/models.py:1260 +#: order/models.py:1309 msgid "Item quantity" msgstr "" -#: order/models.py:1277 +#: order/models.py:1326 msgid "Line item reference" msgstr "" -#: order/models.py:1284 +#: order/models.py:1333 msgid "Line item notes" msgstr "" -#: order/models.py:1296 +#: order/models.py:1345 msgid "Target date for this line item (leave blank to use the target date from the order)" msgstr "" -#: order/models.py:1317 +#: order/models.py:1366 msgid "Line item description (optional)" msgstr "" -#: order/models.py:1323 +#: order/models.py:1372 msgid "Context" msgstr "" -#: order/models.py:1324 +#: order/models.py:1373 msgid "Additional context for this line" msgstr "" -#: order/models.py:1334 +#: order/models.py:1383 msgid "Unit price" msgstr "" -#: order/models.py:1367 +#: order/models.py:1416 msgid "Supplier part must match supplier" msgstr "" -#: order/models.py:1374 +#: order/models.py:1423 msgid "deleted" msgstr "" -#: order/models.py:1402 +#: order/models.py:1451 msgid "Supplier part" msgstr "" -#: order/models.py:1409 order/templates/order/order_base.html:196 +#: order/models.py:1458 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/purchase_order.js:2169 +#: templates/js/translated/return_order.js:763 #: templates/js/translated/table_filters.js:120 #: templates/js/translated/table_filters.js:602 msgid "Received" msgstr "" -#: order/models.py:1410 +#: order/models.py:1459 msgid "Number of items received" msgstr "" -#: order/models.py:1418 stock/models.py:923 stock/serializers.py:400 +#: order/models.py:1467 stock/models.py:940 stock/serializers.py:529 #: stock/templates/stock/item_base.html:183 -#: templates/js/translated/stock.js:2310 +#: templates/js/translated/stock.js:2311 msgid "Purchase Price" msgstr "" -#: order/models.py:1419 +#: order/models.py:1468 msgid "Unit purchase price" msgstr "" -#: order/models.py:1434 +#: order/models.py:1483 msgid "Where does the Purchaser want this item to be stored?" msgstr "" -#: order/models.py:1523 +#: order/models.py:1574 msgid "Virtual part cannot be assigned to a sales order" msgstr "" -#: order/models.py:1528 +#: order/models.py:1579 msgid "Only salable parts can be assigned to a sales order" msgstr "" -#: order/models.py:1554 part/templates/part/part_pricing.html:107 +#: order/models.py:1605 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:1555 +#: order/models.py:1606 msgid "Unit sale price" msgstr "" -#: order/models.py:1565 +#: order/models.py:1615 order/status_codes.py:43 +#: templates/js/translated/sales_order.js:1559 +#: templates/js/translated/sales_order.js:1680 +#: templates/js/translated/sales_order.js:1993 +msgid "Shipped" +msgstr "Αποστάλθηκε" + +#: order/models.py:1616 msgid "Shipped quantity" msgstr "" -#: order/models.py:1657 +#: order/models.py:1708 msgid "Date of shipment" msgstr "" -#: order/models.py:1663 templates/js/translated/sales_order.js:1036 +#: order/models.py:1714 templates/js/translated/sales_order.js:1072 msgid "Delivery Date" msgstr "" -#: order/models.py:1664 +#: order/models.py:1715 msgid "Date of delivery of shipment" msgstr "" -#: order/models.py:1672 +#: order/models.py:1723 msgid "Checked By" msgstr "" -#: order/models.py:1673 +#: order/models.py:1724 msgid "User who checked this shipment" msgstr "" -#: order/models.py:1680 order/models.py:1893 order/serializers.py:1350 -#: order/serializers.py:1460 templates/js/translated/model_renderers.js:448 +#: order/models.py:1731 order/models.py:1944 order/serializers.py:1354 +#: order/serializers.py:1464 templates/js/translated/model_renderers.js:454 msgid "Shipment" msgstr "" -#: order/models.py:1681 +#: order/models.py:1732 msgid "Shipment number" msgstr "" -#: order/models.py:1689 +#: order/models.py:1740 msgid "Tracking Number" msgstr "" -#: order/models.py:1690 +#: order/models.py:1741 msgid "Shipment tracking information" msgstr "" -#: order/models.py:1697 +#: order/models.py:1748 msgid "Invoice Number" msgstr "" -#: order/models.py:1698 +#: order/models.py:1749 msgid "Reference number for associated invoice" msgstr "" -#: order/models.py:1718 +#: order/models.py:1769 msgid "Shipment has already been sent" msgstr "" -#: order/models.py:1721 +#: order/models.py:1772 msgid "Shipment has no allocated stock items" msgstr "" -#: order/models.py:1839 order/models.py:1841 +#: order/models.py:1890 order/models.py:1892 msgid "Stock item has not been assigned" msgstr "" -#: order/models.py:1848 +#: order/models.py:1899 msgid "Cannot allocate stock item to a line with a different part" msgstr "" -#: order/models.py:1851 +#: order/models.py:1902 msgid "Cannot allocate stock to a line without a part" msgstr "" -#: order/models.py:1854 +#: order/models.py:1905 msgid "Allocation quantity cannot exceed stock quantity" msgstr "" -#: order/models.py:1873 order/serializers.py:1227 +#: order/models.py:1924 order/serializers.py:1231 msgid "Quantity must be 1 for serialized stock item" msgstr "" -#: order/models.py:1876 +#: order/models.py:1927 msgid "Sales order does not match shipment" msgstr "" -#: order/models.py:1877 plugin/base/barcodes/api.py:481 +#: order/models.py:1928 plugin/base/barcodes/api.py:481 msgid "Shipment does not match sales order" msgstr "" -#: order/models.py:1885 +#: order/models.py:1936 msgid "Line" msgstr "" -#: order/models.py:1894 +#: order/models.py:1945 msgid "Sales order shipment reference" msgstr "" -#: order/models.py:1907 order/models.py:2215 -#: templates/js/translated/return_order.js:722 +#: order/models.py:1958 order/models.py:2275 +#: templates/js/translated/return_order.js:721 msgid "Item" msgstr "" -#: order/models.py:1908 +#: order/models.py:1959 msgid "Select stock item to allocate" msgstr "" -#: order/models.py:1917 +#: order/models.py:1968 msgid "Enter stock allocation quantity" msgstr "" -#: order/models.py:1997 +#: order/models.py:2057 msgid "Return Order reference" msgstr "" -#: order/models.py:2009 +#: order/models.py:2069 msgid "Company from which items are being returned" msgstr "" -#: order/models.py:2021 +#: order/models.py:2081 msgid "Return order status" msgstr "" -#: order/models.py:2200 +#: order/models.py:2260 msgid "Only serialized items can be assigned to a Return Order" msgstr "" -#: order/models.py:2216 +#: order/models.py:2276 msgid "Select item to return from customer" msgstr "" -#: order/models.py:2222 +#: order/models.py:2282 msgid "Received Date" msgstr "" -#: order/models.py:2223 +#: order/models.py:2283 msgid "The date this this return item was received" msgstr "" -#: order/models.py:2234 templates/js/translated/return_order.js:733 +#: order/models.py:2294 templates/js/translated/return_order.js:732 #: templates/js/translated/table_filters.js:123 msgid "Outcome" msgstr "" -#: order/models.py:2235 +#: order/models.py:2295 msgid "Outcome for this line item" msgstr "" -#: order/models.py:2242 +#: order/models.py:2302 msgid "Cost associated with return or repair for this line item" msgstr "" -#: order/serializers.py:283 +#: order/serializers.py:80 order/templates/order/po_sidebar.html:5 +#: order/templates/order/return_order_detail.html:18 +#: order/templates/order/so_sidebar.html:5 +#: report/templates/report/inventree_purchase_order_report.html:22 +#: report/templates/report/inventree_return_order_report.html:19 +#: report/templates/report/inventree_sales_order_report.html:22 +msgid "Line Items" +msgstr "" + +#: order/serializers.py:84 +msgid "Completed Lines" +msgstr "" + +#: order/serializers.py:287 msgid "Order cannot be cancelled" msgstr "" -#: order/serializers.py:298 order/serializers.py:1243 +#: order/serializers.py:302 order/serializers.py:1247 msgid "Allow order to be closed with incomplete line items" msgstr "" -#: order/serializers.py:308 order/serializers.py:1253 +#: order/serializers.py:312 order/serializers.py:1257 msgid "Order has incomplete line items" msgstr "" -#: order/serializers.py:436 +#: order/serializers.py:440 msgid "Order is not open" msgstr "" -#: order/serializers.py:457 +#: order/serializers.py:461 msgid "Auto Pricing" msgstr "" -#: order/serializers.py:459 +#: order/serializers.py:463 msgid "Automatically calculate purchase price based on supplier part data" msgstr "" -#: order/serializers.py:469 +#: order/serializers.py:473 msgid "Purchase price currency" msgstr "" -#: order/serializers.py:475 +#: order/serializers.py:479 msgid "Merge Items" msgstr "" -#: order/serializers.py:477 +#: order/serializers.py:481 msgid "Merge items with the same part, destination and target date into one line item" msgstr "" -#: order/serializers.py:495 +#: order/serializers.py:499 msgid "Supplier part must be specified" msgstr "" -#: order/serializers.py:498 +#: order/serializers.py:502 msgid "Purchase order must be specified" msgstr "" -#: order/serializers.py:506 +#: order/serializers.py:510 msgid "Supplier must match purchase order" msgstr "" -#: order/serializers.py:507 +#: order/serializers.py:511 msgid "Purchase order must match supplier" msgstr "" -#: order/serializers.py:546 order/serializers.py:1321 +#: order/serializers.py:550 order/serializers.py:1325 msgid "Line Item" msgstr "" -#: order/serializers.py:552 +#: order/serializers.py:556 msgid "Line item does not match purchase order" msgstr "" -#: order/serializers.py:562 order/serializers.py:670 order/serializers.py:1676 +#: order/serializers.py:566 order/serializers.py:674 order/serializers.py:1680 msgid "Select destination location for received items" msgstr "" -#: order/serializers.py:578 templates/js/translated/purchase_order.js:1130 +#: order/serializers.py:582 templates/js/translated/purchase_order.js:1130 msgid "Enter batch code for incoming stock items" msgstr "" -#: order/serializers.py:586 templates/js/translated/purchase_order.js:1154 +#: order/serializers.py:590 templates/js/translated/purchase_order.js:1154 msgid "Enter serial numbers for incoming stock items" msgstr "" -#: order/serializers.py:597 templates/js/translated/barcode.js:52 +#: order/serializers.py:601 templates/js/translated/barcode.js:52 msgid "Barcode" msgstr "" -#: order/serializers.py:598 +#: order/serializers.py:602 msgid "Scanned barcode" msgstr "" -#: order/serializers.py:614 +#: order/serializers.py:618 msgid "Barcode is already in use" msgstr "" -#: order/serializers.py:638 +#: order/serializers.py:642 msgid "An integer quantity must be provided for trackable parts" msgstr "" -#: order/serializers.py:686 order/serializers.py:1692 +#: order/serializers.py:690 order/serializers.py:1696 msgid "Line items must be provided" msgstr "" -#: order/serializers.py:702 +#: order/serializers.py:706 msgid "Destination location must be specified" msgstr "" -#: order/serializers.py:713 +#: order/serializers.py:717 msgid "Supplied barcode values must be unique" msgstr "" -#: order/serializers.py:1070 +#: order/serializers.py:1074 msgid "Sale price currency" msgstr "" -#: order/serializers.py:1130 +#: order/serializers.py:1134 msgid "No shipment details provided" msgstr "" -#: order/serializers.py:1191 order/serializers.py:1330 +#: order/serializers.py:1195 order/serializers.py:1334 msgid "Line item is not associated with this order" msgstr "" -#: order/serializers.py:1210 +#: order/serializers.py:1214 msgid "Quantity must be positive" msgstr "" -#: order/serializers.py:1340 +#: order/serializers.py:1344 msgid "Enter serial numbers to allocate" msgstr "" -#: order/serializers.py:1362 order/serializers.py:1468 +#: order/serializers.py:1366 order/serializers.py:1472 msgid "Shipment has already been shipped" msgstr "" -#: order/serializers.py:1365 order/serializers.py:1471 +#: order/serializers.py:1369 order/serializers.py:1475 msgid "Shipment is not associated with this order" msgstr "" -#: order/serializers.py:1412 +#: order/serializers.py:1416 msgid "No match found for the following serial numbers" msgstr "" -#: order/serializers.py:1419 +#: order/serializers.py:1423 msgid "The following serial numbers are already allocated" msgstr "" -#: order/serializers.py:1646 +#: order/serializers.py:1650 msgid "Return order line item" msgstr "" -#: order/serializers.py:1652 +#: order/serializers.py:1656 msgid "Line item does not match return order" msgstr "" -#: order/serializers.py:1655 +#: order/serializers.py:1659 msgid "Line item has already been received" msgstr "" -#: order/serializers.py:1684 +#: order/serializers.py:1688 msgid "Items can only be received against orders which are in progress" msgstr "" -#: order/serializers.py:1762 +#: order/serializers.py:1766 msgid "Line price currency" msgstr "" +#: order/status_codes.py:16 order/status_codes.py:46 stock/status_codes.py:16 +msgid "Lost" +msgstr "Χάθηκε" + +#: order/status_codes.py:17 order/status_codes.py:47 stock/status_codes.py:22 +msgid "Returned" +msgstr "Επιστράφηκε" + +#: order/status_codes.py:40 order/status_codes.py:67 +msgid "In Progress" +msgstr "Σε Εξέλιξη" + +#: order/status_codes.py:85 +msgid "Return" +msgstr "Επιστροφή" + +#: order/status_codes.py:88 +msgid "Repair" +msgstr "Επισκευή" + +#: order/status_codes.py:91 +msgid "Replace" +msgstr "Αντικατάσταση" + +#: order/status_codes.py:94 +msgid "Refund" +msgstr "Επιστροφή χρημάτων" + +#: order/status_codes.py:97 +msgid "Reject" +msgstr "Απόρριψη" + #: order/tasks.py:25 msgid "Overdue Purchase Order" msgstr "" @@ -5553,7 +5415,7 @@ msgstr "" #: order/templates/order/order_base.html:84 #: order/templates/order/return_order_base.html:87 -#: order/templates/order/sales_order_base.html:93 +#: order/templates/order/sales_order_base.html:97 msgid "Complete Order" msgstr "" @@ -5563,13 +5425,13 @@ msgstr "" #: order/templates/order/order_base.html:106 #: order/templates/order/return_order_base.html:101 -#: order/templates/order/sales_order_base.html:106 +#: order/templates/order/sales_order_base.html:110 msgid "Order Reference" msgstr "" #: order/templates/order/order_base.html:111 #: order/templates/order/return_order_base.html:106 -#: order/templates/order/sales_order_base.html:111 +#: order/templates/order/sales_order_base.html:115 msgid "Order Description" msgstr "" @@ -5578,19 +5440,19 @@ msgid "No suppplier information available" msgstr "" #: order/templates/order/order_base.html:154 -#: order/templates/order/sales_order_base.html:157 +#: order/templates/order/sales_order_base.html:161 msgid "Completed Line Items" msgstr "" #: order/templates/order/order_base.html:160 -#: order/templates/order/sales_order_base.html:163 -#: order/templates/order/sales_order_base.html:173 +#: order/templates/order/sales_order_base.html:167 +#: order/templates/order/sales_order_base.html:177 msgid "Incomplete" msgstr "" #: order/templates/order/order_base.html:179 #: order/templates/order/return_order_base.html:157 -#: report/templates/report/inventree_build_order_base.html:121 +#: report/templates/report/inventree_build_order_report.html:121 msgid "Issued" msgstr "" @@ -5600,15 +5462,15 @@ msgstr "" #: order/templates/order/order_base.html:228 #: order/templates/order/return_order_base.html:199 -#: order/templates/order/sales_order_base.html:239 +#: order/templates/order/sales_order_base.html:243 msgid "Total cost could not be calculated" msgstr "" -#: order/templates/order/order_base.html:318 +#: order/templates/order/order_base.html:314 msgid "Purchase Order QR Code" msgstr "" -#: order/templates/order/order_base.html:330 +#: order/templates/order/order_base.html:326 msgid "Link Barcode to Purchase Order" msgstr "" @@ -5662,11 +5524,11 @@ msgstr "" #: 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/build.js:1629 #: 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/return_order.js:505 +#: templates/js/translated/sales_order.js:1145 #: templates/js/translated/stock.js:714 templates/js/translated/stock.js:883 #: templates/patterns/wizard/match_fields.html:70 msgid "Remove row" @@ -5708,15 +5570,6 @@ msgstr "" 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 "" @@ -5729,7 +5582,7 @@ msgstr "" #: 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/return_order.js:458 #: templates/js/translated/sales_order.js:237 msgid "Add Line Item" msgstr "" @@ -5778,30 +5631,30 @@ 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 +#: order/templates/order/sales_order_base.html:155 +#: templates/js/translated/return_order.js:308 +#: templates/js/translated/sales_order.js:833 msgid "Customer Reference" msgstr "" #: order/templates/order/return_order_base.html:195 -#: order/templates/order/sales_order_base.html:235 +#: order/templates/order/sales_order_base.html:239 #: part/templates/part/part_pricing.html:32 #: part/templates/part/part_pricing.html:58 #: part/templates/part/part_pricing.html:99 #: part/templates/part/part_pricing.html:114 #: templates/js/translated/part.js:1072 -#: templates/js/translated/purchase_order.js:1753 -#: templates/js/translated/return_order.js:381 -#: templates/js/translated/sales_order.js:855 +#: templates/js/translated/purchase_order.js:1752 +#: templates/js/translated/return_order.js:380 +#: templates/js/translated/sales_order.js:891 msgid "Total Cost" msgstr "" -#: order/templates/order/return_order_base.html:263 +#: order/templates/order/return_order_base.html:259 msgid "Return Order QR Code" msgstr "" -#: order/templates/order/return_order_base.html:275 +#: order/templates/order/return_order_base.html:271 msgid "Link Barcode to Return Order" msgstr "" @@ -5819,25 +5672,30 @@ msgid "Ship Items" msgstr "" #: order/templates/order/sales_order_base.html:92 -#: templates/js/translated/sales_order.js:484 +#: order/templates/order/sales_order_base.html:93 +msgid "Mark As Shipped" +msgstr "" + +#: order/templates/order/sales_order_base.html:96 +#: templates/js/translated/sales_order.js:536 msgid "Complete Sales Order" msgstr "" -#: order/templates/order/sales_order_base.html:131 +#: order/templates/order/sales_order_base.html:135 msgid "This Sales Order has not been fully allocated" msgstr "" -#: order/templates/order/sales_order_base.html:169 +#: order/templates/order/sales_order_base.html:173 #: order/templates/order/sales_order_detail.html:99 #: order/templates/order/so_sidebar.html:11 msgid "Completed Shipments" msgstr "" -#: order/templates/order/sales_order_base.html:312 +#: order/templates/order/sales_order_base.html:321 msgid "Sales Order QR Code" msgstr "" -#: order/templates/order/sales_order_base.html:324 +#: order/templates/order/sales_order_base.html:333 msgid "Link Barcode to Sales Order" msgstr "" @@ -5881,12 +5739,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:3921 part/stocktake.py:218 +#: part/admin.py:39 part/admin.py:406 part/models.py:3964 part/stocktake.py:218 #: stock/admin.py:153 msgid "Part ID" msgstr "" -#: part/admin.py:41 part/admin.py:411 part/models.py:3922 part/stocktake.py:219 +#: part/admin.py:41 part/admin.py:413 part/models.py:3965 part/stocktake.py:219 #: stock/admin.py:157 msgid "Part Name" msgstr "" @@ -5895,20 +5753,20 @@ msgstr "" msgid "Part Description" msgstr "" -#: part/admin.py:48 part/models.py:904 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 +#: part/admin.py:48 part/models.py:947 part/templates/part/part_base.html:269 +#: report/templates/report/inventree_stock_location_report.html:103 +#: templates/js/translated/part.js:1226 templates/js/translated/part.js:2340 +#: templates/js/translated/stock.js:2036 msgid "IPN" msgstr "" -#: part/admin.py:50 part/models.py:913 part/templates/part/part_base.html:277 -#: report/models.py:195 templates/js/translated/part.js:1231 -#: templates/js/translated/part.js:2347 +#: part/admin.py:50 part/models.py:956 part/templates/part/part_base.html:277 +#: report/models.py:161 templates/js/translated/part.js:1231 +#: templates/js/translated/part.js:2346 msgid "Revision" msgstr "" -#: part/admin.py:53 part/admin.py:317 part/models.py:886 +#: part/admin.py:53 part/admin.py:319 part/models.py:929 #: part/templates/part/category.html:94 part/templates/part/part_base.html:298 msgid "Keywords" msgstr "" @@ -5917,15 +5775,15 @@ msgstr "" msgid "Part Image" msgstr "" -#: part/admin.py:63 part/admin.py:300 part/stocktake.py:221 +#: part/admin.py:63 part/admin.py:302 part/stocktake.py:221 msgid "Category ID" msgstr "" -#: part/admin.py:67 part/admin.py:302 part/stocktake.py:222 +#: part/admin.py:67 part/admin.py:304 part/stocktake.py:222 msgid "Category Name" msgstr "" -#: part/admin.py:71 part/admin.py:314 +#: part/admin.py:71 part/admin.py:316 msgid "Default Location ID" msgstr "" @@ -5933,11 +5791,11 @@ msgstr "" msgid "Default Supplier ID" msgstr "" -#: part/admin.py:81 part/models.py:872 part/templates/part/part_base.html:177 +#: part/admin.py:81 part/models.py:915 part/templates/part/part_base.html:177 msgid "Variant Of" msgstr "" -#: part/admin.py:84 part/models.py:1000 part/templates/part/part_base.html:203 +#: part/admin.py:84 part/models.py:1043 part/templates/part/part_base.html:203 msgid "Minimum Stock" msgstr "" @@ -5950,160 +5808,164 @@ msgstr "" msgid "Building" msgstr "" -#: part/admin.py:155 part/models.py:3080 part/models.py:3094 +#: part/admin.py:155 part/models.py:3123 part/models.py:3137 #: templates/js/translated/part.js:969 msgid "Minimum Cost" msgstr "" -#: part/admin.py:158 part/models.py:3087 part/models.py:3101 +#: part/admin.py:158 part/models.py:3130 part/models.py:3144 #: 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 +#: part/admin.py:308 part/admin.py:395 stock/admin.py:58 stock/admin.py:211 msgid "Parent ID" msgstr "" -#: part/admin.py:310 part/admin.py:400 stock/admin.py:62 +#: part/admin.py:312 part/admin.py:402 stock/admin.py:62 msgid "Parent Name" msgstr "" -#: part/admin.py:318 part/templates/part/category.html:88 +#: part/admin.py:320 part/templates/part/category.html:88 #: part/templates/part/category.html:101 msgid "Category Path" msgstr "" -#: part/admin.py:323 part/models.py:391 part/serializers.py:117 +#: part/admin.py:325 part/models.py:393 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/js/translated/part.js:2803 templates/js/translated/search.js:130 #: templates/navbar.html:24 users/models.py:203 msgid "Parts" msgstr "" -#: part/admin.py:384 +#: part/admin.py:386 msgid "BOM Level" msgstr "" -#: part/admin.py:387 +#: part/admin.py:389 msgid "BOM Item ID" msgstr "" -#: part/admin.py:397 +#: part/admin.py:399 msgid "Parent IPN" msgstr "" -#: part/admin.py:408 part/models.py:3923 +#: part/admin.py:410 part/models.py:3966 msgid "Part IPN" msgstr "" -#: part/admin.py:421 part/serializers.py:1261 +#: part/admin.py:423 part/serializers.py:1278 #: templates/js/translated/pricing.js:358 #: templates/js/translated/pricing.js:1024 msgid "Minimum Price" msgstr "" -#: part/admin.py:426 part/serializers.py:1276 +#: part/admin.py:428 part/serializers.py:1293 #: templates/js/translated/pricing.js:353 #: templates/js/translated/pricing.js:1032 msgid "Maximum Price" msgstr "" -#: part/api.py:119 +#: part/api.py:110 msgid "Starred" msgstr "" -#: part/api.py:121 +#: part/api.py:112 msgid "Filter by starred categories" msgstr "" -#: part/api.py:138 stock/api.py:284 +#: part/api.py:129 stock/api.py:318 msgid "Depth" msgstr "" -#: part/api.py:138 +#: part/api.py:129 msgid "Filter by category depth" msgstr "" -#: part/api.py:156 stock/api.py:302 +#: part/api.py:147 stock/api.py:336 msgid "Cascade" msgstr "" -#: part/api.py:158 +#: part/api.py:149 msgid "Include sub-categories in filtered results" msgstr "" -#: part/api.py:178 +#: part/api.py:169 msgid "Parent" msgstr "" -#: part/api.py:180 +#: part/api.py:171 msgid "Filter by parent category" msgstr "" -#: part/api.py:213 +#: part/api.py:204 msgid "Exclude Tree" msgstr "" -#: part/api.py:215 +#: part/api.py:206 msgid "Exclude sub-categories under the specified category" msgstr "" -#: part/api.py:461 +#: part/api.py:455 msgid "Has Results" msgstr "" -#: part/api.py:628 +#: part/api.py:622 msgid "Incoming Purchase Order" msgstr "" -#: part/api.py:646 +#: part/api.py:640 msgid "Outgoing Sales Order" msgstr "" -#: part/api.py:662 +#: part/api.py:656 msgid "Stock produced by Build Order" msgstr "" -#: part/api.py:746 +#: part/api.py:740 msgid "Stock required for Build Order" msgstr "" -#: part/api.py:893 +#: part/api.py:887 msgid "Valid" msgstr "" -#: part/api.py:894 +#: part/api.py:888 msgid "Validate entire Bill of Materials" msgstr "" -#: part/api.py:900 +#: part/api.py:894 msgid "This option must be selected" msgstr "" -#: part/api.py:1561 part/models.py:896 part/models.py:3386 part/models.py:3866 -#: part/serializers.py:406 part/serializers.py:1117 -#: part/templates/part/part_base.html:260 stock/api.py:745 +#: part/api.py:1111 +msgid "BOM Valid" +msgstr "" + +#: part/api.py:1515 part/models.py:939 part/models.py:3429 part/models.py:3909 +#: part/serializers.py:406 part/serializers.py:1134 +#: part/templates/part/part_base.html:260 stock/api.py:781 #: templates/InvenTree/settings/settings_staff_js.html:300 #: templates/js/translated/notification.js:60 -#: templates/js/translated/part.js:2377 +#: templates/js/translated/part.js:2376 msgid "Category" msgstr "" -#: part/api.py:1849 +#: part/api.py:1803 msgid "Uses" msgstr "" -#: part/bom.py:170 part/models.py:101 part/models.py:939 +#: part/bom.py:170 part/models.py:102 part/models.py:982 #: part/templates/part/category.html:116 part/templates/part/part_base.html:367 msgid "Default Location" msgstr "" -#: part/bom.py:171 part/serializers.py:822 +#: part/bom.py:171 part/serializers.py:837 #: templates/email/low_stock_notification.html:16 msgid "Total Stock" msgstr "" @@ -6112,698 +5974,712 @@ msgstr "" msgid "Input quantity for price calculation" msgstr "" -#: part/models.py:82 part/models.py:3867 part/templates/part/category.html:16 +#: part/models.py:83 part/models.py:3910 part/templates/part/category.html:16 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "" -#: part/models.py:83 part/templates/part/category.html:136 +#: part/models.py:84 part/templates/part/category.html:136 #: templates/InvenTree/search.html:97 templates/js/translated/search.js:158 #: users/models.py:202 msgid "Part Categories" msgstr "" -#: part/models.py:102 +#: part/models.py:103 msgid "Default location for parts in this category" msgstr "" -#: part/models.py:107 stock/models.py:165 templates/js/translated/part.js:2810 +#: part/models.py:108 stock/models.py:173 templates/js/translated/part.js:2809 #: 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:109 +#: part/models.py:110 msgid "Parts may not be directly assigned to a structural category, but may be assigned to child categories." msgstr "" -#: part/models.py:118 +#: part/models.py:119 msgid "Default keywords" msgstr "" -#: part/models.py:119 +#: part/models.py:120 msgid "Default keywords for parts in this category" msgstr "" -#: part/models.py:125 stock/models.py:89 stock/models.py:148 +#: part/models.py:126 stock/models.py:85 stock/models.py:156 #: templates/InvenTree/settings/settings_staff_js.html:456 msgid "Icon" msgstr "" -#: part/models.py:126 stock/models.py:149 +#: part/models.py:127 stock/models.py:157 msgid "Icon (optional)" msgstr "" -#: part/models.py:148 +#: part/models.py:149 msgid "You cannot make this part category structural because some parts are already assigned to it!" msgstr "" -#: part/models.py:484 +#: part/models.py:482 +msgid "Cannot delete this part as it is still active" +msgstr "" + +#: part/models.py:489 +msgid "Cannot delete this part as it is used in an assembly" +msgstr "" + +#: part/models.py:527 msgid "Invalid choice for parent part" msgstr "" -#: part/models.py:532 part/models.py:539 +#: part/models.py:575 part/models.py:582 #, python-brace-format msgid "Part '{self}' cannot be used in BOM for '{parent}' (recursive)" msgstr "" -#: part/models.py:551 +#: part/models.py:594 #, python-brace-format msgid "Part '{parent}' is used in BOM for '{self}' (recursive)" msgstr "" -#: part/models.py:616 +#: part/models.py:659 #, python-brace-format msgid "IPN must match regex pattern {pattern}" msgstr "" -#: part/models.py:696 +#: part/models.py:739 msgid "Stock item with this serial number already exists" msgstr "" -#: part/models.py:801 +#: part/models.py:844 msgid "Duplicate IPN not allowed in part settings" msgstr "" -#: part/models.py:811 +#: part/models.py:854 msgid "Part with this Name, IPN and Revision already exists." msgstr "" -#: part/models.py:826 +#: part/models.py:869 msgid "Parts cannot be assigned to structural part categories!" msgstr "" -#: part/models.py:855 part/models.py:3922 +#: part/models.py:898 part/models.py:3965 msgid "Part name" msgstr "" -#: part/models.py:860 +#: part/models.py:903 msgid "Is Template" msgstr "" -#: part/models.py:861 +#: part/models.py:904 msgid "Is this part a template part?" msgstr "" -#: part/models.py:871 +#: part/models.py:914 msgid "Is this part a variant of another part?" msgstr "" -#: part/models.py:879 +#: part/models.py:922 msgid "Part description (optional)" msgstr "" -#: part/models.py:887 +#: part/models.py:930 msgid "Part keywords to improve visibility in search results" msgstr "" -#: part/models.py:897 +#: part/models.py:940 msgid "Part category" msgstr "" -#: part/models.py:905 +#: part/models.py:948 msgid "Internal Part Number" msgstr "" -#: part/models.py:912 +#: part/models.py:955 msgid "Part revision or version number" msgstr "" -#: part/models.py:937 +#: part/models.py:980 msgid "Where is this item normally stored?" msgstr "" -#: part/models.py:983 part/templates/part/part_base.html:376 +#: part/models.py:1026 part/templates/part/part_base.html:376 msgid "Default Supplier" msgstr "" -#: part/models.py:984 +#: part/models.py:1027 msgid "Default supplier part" msgstr "" -#: part/models.py:991 +#: part/models.py:1034 msgid "Default Expiry" msgstr "" -#: part/models.py:992 +#: part/models.py:1035 msgid "Expiry time (in days) for stock items of this part" msgstr "" -#: part/models.py:1001 +#: part/models.py:1044 msgid "Minimum allowed stock level" msgstr "" -#: part/models.py:1010 +#: part/models.py:1053 msgid "Units of measure for this part" msgstr "" -#: part/models.py:1017 +#: part/models.py:1060 msgid "Can this part be built from other parts?" msgstr "" -#: part/models.py:1023 +#: part/models.py:1066 msgid "Can this part be used to build other parts?" msgstr "" -#: part/models.py:1029 +#: part/models.py:1072 msgid "Does this part have tracking for unique items?" msgstr "" -#: part/models.py:1035 +#: part/models.py:1078 msgid "Can this part be purchased from external suppliers?" msgstr "" -#: part/models.py:1041 +#: part/models.py:1084 msgid "Can this part be sold to customers?" msgstr "" -#: part/models.py:1045 +#: part/models.py:1088 msgid "Is this part active?" msgstr "" -#: part/models.py:1051 +#: part/models.py:1094 msgid "Is this a virtual part, such as a software product or license?" msgstr "" -#: part/models.py:1057 +#: part/models.py:1100 msgid "BOM checksum" msgstr "" -#: part/models.py:1058 +#: part/models.py:1101 msgid "Stored BOM checksum" msgstr "" -#: part/models.py:1066 +#: part/models.py:1109 msgid "BOM checked by" msgstr "" -#: part/models.py:1071 +#: part/models.py:1114 msgid "BOM checked date" msgstr "" -#: part/models.py:1087 +#: part/models.py:1130 msgid "Creation User" msgstr "" -#: part/models.py:1097 +#: part/models.py:1140 msgid "Owner responsible for this part" msgstr "" -#: part/models.py:1102 part/templates/part/part_base.html:339 +#: part/models.py:1145 part/templates/part/part_base.html:339 #: stock/templates/stock/item_base.html:451 -#: templates/js/translated/part.js:2471 +#: templates/js/translated/part.js:2470 msgid "Last Stocktake" msgstr "" -#: part/models.py:1975 +#: part/models.py:2018 msgid "Sell multiple" msgstr "" -#: part/models.py:2994 +#: part/models.py:3037 msgid "Currency used to cache pricing calculations" msgstr "" -#: part/models.py:3010 +#: part/models.py:3053 msgid "Minimum BOM Cost" msgstr "" -#: part/models.py:3011 +#: part/models.py:3054 msgid "Minimum cost of component parts" msgstr "" -#: part/models.py:3017 +#: part/models.py:3060 msgid "Maximum BOM Cost" msgstr "" -#: part/models.py:3018 +#: part/models.py:3061 msgid "Maximum cost of component parts" msgstr "" -#: part/models.py:3024 +#: part/models.py:3067 msgid "Minimum Purchase Cost" msgstr "" -#: part/models.py:3025 +#: part/models.py:3068 msgid "Minimum historical purchase cost" msgstr "" -#: part/models.py:3031 +#: part/models.py:3074 msgid "Maximum Purchase Cost" msgstr "" -#: part/models.py:3032 +#: part/models.py:3075 msgid "Maximum historical purchase cost" msgstr "" -#: part/models.py:3038 +#: part/models.py:3081 msgid "Minimum Internal Price" msgstr "" -#: part/models.py:3039 +#: part/models.py:3082 msgid "Minimum cost based on internal price breaks" msgstr "" -#: part/models.py:3045 +#: part/models.py:3088 msgid "Maximum Internal Price" msgstr "" -#: part/models.py:3046 +#: part/models.py:3089 msgid "Maximum cost based on internal price breaks" msgstr "" -#: part/models.py:3052 +#: part/models.py:3095 msgid "Minimum Supplier Price" msgstr "" -#: part/models.py:3053 +#: part/models.py:3096 msgid "Minimum price of part from external suppliers" msgstr "" -#: part/models.py:3059 +#: part/models.py:3102 msgid "Maximum Supplier Price" msgstr "" -#: part/models.py:3060 +#: part/models.py:3103 msgid "Maximum price of part from external suppliers" msgstr "" -#: part/models.py:3066 +#: part/models.py:3109 msgid "Minimum Variant Cost" msgstr "" -#: part/models.py:3067 +#: part/models.py:3110 msgid "Calculated minimum cost of variant parts" msgstr "" -#: part/models.py:3073 +#: part/models.py:3116 msgid "Maximum Variant Cost" msgstr "" -#: part/models.py:3074 +#: part/models.py:3117 msgid "Calculated maximum cost of variant parts" msgstr "" -#: part/models.py:3081 +#: part/models.py:3124 msgid "Override minimum cost" msgstr "" -#: part/models.py:3088 +#: part/models.py:3131 msgid "Override maximum cost" msgstr "" -#: part/models.py:3095 +#: part/models.py:3138 msgid "Calculated overall minimum cost" msgstr "" -#: part/models.py:3102 +#: part/models.py:3145 msgid "Calculated overall maximum cost" msgstr "" -#: part/models.py:3108 +#: part/models.py:3151 msgid "Minimum Sale Price" msgstr "" -#: part/models.py:3109 +#: part/models.py:3152 msgid "Minimum sale price based on price breaks" msgstr "" -#: part/models.py:3115 +#: part/models.py:3158 msgid "Maximum Sale Price" msgstr "" -#: part/models.py:3116 +#: part/models.py:3159 msgid "Maximum sale price based on price breaks" msgstr "" -#: part/models.py:3122 +#: part/models.py:3165 msgid "Minimum Sale Cost" msgstr "" -#: part/models.py:3123 +#: part/models.py:3166 msgid "Minimum historical sale price" msgstr "" -#: part/models.py:3129 +#: part/models.py:3172 msgid "Maximum Sale Cost" msgstr "" -#: part/models.py:3130 +#: part/models.py:3173 msgid "Maximum historical sale price" msgstr "" -#: part/models.py:3149 +#: part/models.py:3192 msgid "Part for stocktake" msgstr "" -#: part/models.py:3154 +#: part/models.py:3197 msgid "Item Count" msgstr "" -#: part/models.py:3155 +#: part/models.py:3198 msgid "Number of individual stock entries at time of stocktake" msgstr "" -#: part/models.py:3163 +#: part/models.py:3206 msgid "Total available stock at time of stocktake" msgstr "" -#: part/models.py:3167 part/models.py:3250 +#: part/models.py:3210 part/models.py:3293 #: part/templates/part/part_scheduling.html:13 -#: report/templates/report/inventree_test_report_base.html:106 +#: report/templates/report/inventree_test_report.html:106 #: templates/InvenTree/settings/plugin_settings.html:37 #: templates/InvenTree/settings/settings_staff_js.html:540 #: templates/js/translated/part.js:1085 templates/js/translated/pricing.js:826 #: templates/js/translated/pricing.js:950 -#: templates/js/translated/purchase_order.js:1732 +#: templates/js/translated/purchase_order.js:1731 #: templates/js/translated/stock.js:2821 msgid "Date" msgstr "" -#: part/models.py:3168 +#: part/models.py:3211 msgid "Date stocktake was performed" msgstr "" -#: part/models.py:3176 +#: part/models.py:3219 msgid "Additional notes" msgstr "" -#: part/models.py:3186 +#: part/models.py:3229 msgid "User who performed this stocktake" msgstr "" -#: part/models.py:3192 +#: part/models.py:3235 msgid "Minimum Stock Cost" msgstr "" -#: part/models.py:3193 +#: part/models.py:3236 msgid "Estimated minimum cost of stock on hand" msgstr "" -#: part/models.py:3199 +#: part/models.py:3242 msgid "Maximum Stock Cost" msgstr "" -#: part/models.py:3200 +#: part/models.py:3243 msgid "Estimated maximum cost of stock on hand" msgstr "" -#: part/models.py:3256 templates/InvenTree/settings/settings_staff_js.html:529 +#: part/models.py:3299 templates/InvenTree/settings/settings_staff_js.html:529 msgid "Report" msgstr "" -#: part/models.py:3257 +#: part/models.py:3300 msgid "Stocktake report file (generated internally)" msgstr "" -#: part/models.py:3262 templates/InvenTree/settings/settings_staff_js.html:536 +#: part/models.py:3305 templates/InvenTree/settings/settings_staff_js.html:536 msgid "Part Count" msgstr "" -#: part/models.py:3263 +#: part/models.py:3306 msgid "Number of parts covered by stocktake" msgstr "" -#: part/models.py:3273 +#: part/models.py:3316 msgid "User who requested this stocktake report" msgstr "" -#: part/models.py:3435 +#: part/models.py:3478 msgid "Invalid template name - must include at least one alphanumeric character" msgstr "" -#: part/models.py:3446 +#: part/models.py:3489 msgid "Test templates can only be created for trackable parts" msgstr "" -#: part/models.py:3457 +#: part/models.py:3500 msgid "Test template with the same key already exists for part" msgstr "" -#: part/models.py:3474 templates/js/translated/part.js:2879 +#: part/models.py:3517 templates/js/translated/part.js:2878 msgid "Test Name" msgstr "" -#: part/models.py:3475 +#: part/models.py:3518 msgid "Enter a name for the test" msgstr "" -#: part/models.py:3481 +#: part/models.py:3524 msgid "Test Key" msgstr "" -#: part/models.py:3482 +#: part/models.py:3525 msgid "Simplified key for the test" msgstr "" -#: part/models.py:3489 +#: part/models.py:3532 msgid "Test Description" msgstr "" -#: part/models.py:3490 +#: part/models.py:3533 msgid "Enter description for this test" msgstr "" -#: part/models.py:3494 +#: part/models.py:3537 report/models.py:208 +#: templates/js/translated/part.js:2899 +#: templates/js/translated/table_filters.js:481 +msgid "Enabled" +msgstr "" + +#: part/models.py:3537 msgid "Is this test enabled?" msgstr "" -#: part/models.py:3499 templates/js/translated/part.js:2908 +#: part/models.py:3542 templates/js/translated/part.js:2907 #: templates/js/translated/table_filters.js:477 msgid "Required" msgstr "" -#: part/models.py:3500 +#: part/models.py:3543 msgid "Is this test required to pass?" msgstr "" -#: part/models.py:3505 templates/js/translated/part.js:2916 +#: part/models.py:3548 templates/js/translated/part.js:2915 msgid "Requires Value" msgstr "" -#: part/models.py:3506 +#: part/models.py:3549 msgid "Does this test require a value when adding a test result?" msgstr "" -#: part/models.py:3511 templates/js/translated/part.js:2923 +#: part/models.py:3554 templates/js/translated/part.js:2922 msgid "Requires Attachment" msgstr "" -#: part/models.py:3513 +#: part/models.py:3556 msgid "Does this test require a file attachment when adding a test result?" msgstr "" -#: part/models.py:3560 +#: part/models.py:3603 msgid "Checkbox parameters cannot have units" msgstr "" -#: part/models.py:3565 +#: part/models.py:3608 msgid "Checkbox parameters cannot have choices" msgstr "" -#: part/models.py:3585 +#: part/models.py:3628 msgid "Choices must be unique" msgstr "" -#: part/models.py:3602 +#: part/models.py:3645 msgid "Parameter template name must be unique" msgstr "" -#: part/models.py:3617 +#: part/models.py:3660 msgid "Parameter Name" msgstr "" -#: part/models.py:3624 +#: part/models.py:3667 msgid "Physical units for this parameter" msgstr "" -#: part/models.py:3632 +#: part/models.py:3675 msgid "Parameter description" msgstr "" -#: part/models.py:3638 templates/js/translated/part.js:1627 +#: part/models.py:3681 templates/js/translated/part.js:1627 #: templates/js/translated/table_filters.js:825 msgid "Checkbox" msgstr "" -#: part/models.py:3639 +#: part/models.py:3682 msgid "Is this parameter a checkbox?" msgstr "" -#: part/models.py:3644 templates/js/translated/part.js:1636 +#: part/models.py:3687 templates/js/translated/part.js:1636 msgid "Choices" msgstr "" -#: part/models.py:3645 +#: part/models.py:3688 msgid "Valid choices for this parameter (comma-separated)" msgstr "" -#: part/models.py:3722 +#: part/models.py:3765 msgid "Invalid choice for parameter value" msgstr "" -#: part/models.py:3765 +#: part/models.py:3808 msgid "Parent Part" msgstr "" -#: part/models.py:3773 part/models.py:3874 part/models.py:3875 +#: part/models.py:3816 part/models.py:3917 part/models.py:3918 #: templates/InvenTree/settings/settings_staff_js.html:295 msgid "Parameter Template" msgstr "" -#: part/models.py:3778 +#: part/models.py:3821 msgid "Data" msgstr "" -#: part/models.py:3779 +#: part/models.py:3822 msgid "Parameter Value" msgstr "" -#: part/models.py:3881 templates/InvenTree/settings/settings_staff_js.html:304 +#: part/models.py:3924 templates/InvenTree/settings/settings_staff_js.html:304 msgid "Default Value" msgstr "" -#: part/models.py:3882 +#: part/models.py:3925 msgid "Default Parameter Value" msgstr "" -#: part/models.py:3920 +#: part/models.py:3963 msgid "Part ID or part name" msgstr "" -#: part/models.py:3921 +#: part/models.py:3964 msgid "Unique part ID value" msgstr "" -#: part/models.py:3923 +#: part/models.py:3966 msgid "Part IPN value" msgstr "" -#: part/models.py:3924 +#: part/models.py:3967 msgid "Level" msgstr "" -#: part/models.py:3924 +#: part/models.py:3967 msgid "BOM level" msgstr "" -#: part/models.py:4014 +#: part/models.py:4057 msgid "Select parent part" msgstr "" -#: part/models.py:4024 +#: part/models.py:4067 msgid "Sub part" msgstr "" -#: part/models.py:4025 +#: part/models.py:4068 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:4036 +#: part/models.py:4079 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:4042 +#: part/models.py:4085 msgid "This BOM item is optional" msgstr "" -#: part/models.py:4048 +#: part/models.py:4091 msgid "This BOM item is consumable (it is not tracked in build orders)" msgstr "" -#: part/models.py:4055 part/templates/part/upload_bom.html:55 +#: part/models.py:4098 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "" -#: part/models.py:4056 +#: part/models.py:4099 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:4063 +#: part/models.py:4106 msgid "BOM item reference" msgstr "" -#: part/models.py:4071 +#: part/models.py:4114 msgid "BOM item notes" msgstr "" -#: part/models.py:4077 +#: part/models.py:4120 msgid "Checksum" msgstr "" -#: part/models.py:4078 +#: part/models.py:4121 msgid "BOM line checksum" msgstr "" -#: part/models.py:4083 templates/js/translated/table_filters.js:174 +#: part/models.py:4126 templates/js/translated/table_filters.js:174 msgid "Validated" msgstr "" -#: part/models.py:4084 +#: part/models.py:4127 msgid "This BOM item has been validated" msgstr "" -#: part/models.py:4089 part/templates/part/upload_bom.html:57 +#: part/models.py:4132 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:4090 +#: part/models.py:4133 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "" -#: part/models.py:4095 part/templates/part/upload_bom.html:56 +#: part/models.py:4138 part/templates/part/upload_bom.html:56 #: templates/js/translated/bom.js:1046 msgid "Allow Variants" msgstr "" -#: part/models.py:4096 +#: part/models.py:4139 msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:4181 stock/models.py:647 +#: part/models.py:4224 stock/models.py:664 msgid "Quantity must be integer value for trackable parts" msgstr "" -#: part/models.py:4191 part/models.py:4193 +#: part/models.py:4234 part/models.py:4236 msgid "Sub part must be specified" msgstr "" -#: part/models.py:4333 +#: part/models.py:4376 msgid "BOM Item Substitute" msgstr "" -#: part/models.py:4354 +#: part/models.py:4397 msgid "Substitute part cannot be the same as the master part" msgstr "" -#: part/models.py:4367 +#: part/models.py:4410 msgid "Parent BOM item" msgstr "" -#: part/models.py:4375 +#: part/models.py:4418 msgid "Substitute part" msgstr "" -#: part/models.py:4391 +#: part/models.py:4434 msgid "Part 1" msgstr "" -#: part/models.py:4399 +#: part/models.py:4442 msgid "Part 2" msgstr "" -#: part/models.py:4400 +#: part/models.py:4443 msgid "Select Related Part" msgstr "" -#: part/models.py:4419 +#: part/models.py:4462 msgid "Part relationship cannot be created between a part and itself" msgstr "" -#: part/models.py:4424 +#: part/models.py:4467 msgid "Duplicate relationship already exists" msgstr "" @@ -6821,7 +6697,7 @@ msgstr "" msgid "Number of results recorded against this template" msgstr "" -#: part/serializers.py:210 part/serializers.py:228 stock/serializers.py:406 +#: part/serializers.py:210 part/serializers.py:228 stock/serializers.py:535 msgid "Purchase currency of this stock item" msgstr "" @@ -6837,299 +6713,299 @@ msgstr "" msgid "Select category" msgstr "" -#: part/serializers.py:437 +#: part/serializers.py:442 msgid "Original Part" msgstr "" -#: part/serializers.py:438 +#: part/serializers.py:443 msgid "Select original part to duplicate" msgstr "" -#: part/serializers.py:443 +#: part/serializers.py:448 msgid "Copy Image" msgstr "" -#: part/serializers.py:444 +#: part/serializers.py:449 msgid "Copy image from original part" msgstr "" -#: part/serializers.py:450 part/templates/part/detail.html:277 +#: part/serializers.py:455 part/templates/part/detail.html:277 msgid "Copy BOM" msgstr "" -#: part/serializers.py:451 +#: part/serializers.py:456 msgid "Copy bill of materials from original part" msgstr "" -#: part/serializers.py:457 +#: part/serializers.py:462 msgid "Copy Parameters" msgstr "" -#: part/serializers.py:458 +#: part/serializers.py:463 msgid "Copy parameter data from original part" msgstr "" -#: part/serializers.py:464 +#: part/serializers.py:469 msgid "Copy Notes" msgstr "" -#: part/serializers.py:465 +#: part/serializers.py:470 msgid "Copy notes from original part" msgstr "" -#: part/serializers.py:478 +#: part/serializers.py:488 msgid "Initial Stock Quantity" msgstr "" -#: part/serializers.py:480 +#: part/serializers.py:490 msgid "Specify initial stock quantity for this Part. If quantity is zero, no stock is added." msgstr "" -#: part/serializers.py:487 +#: part/serializers.py:497 msgid "Initial Stock Location" msgstr "" -#: part/serializers.py:488 +#: part/serializers.py:498 msgid "Specify initial stock location for this Part" msgstr "" -#: part/serializers.py:500 +#: part/serializers.py:515 msgid "Select supplier (or leave blank to skip)" msgstr "" -#: part/serializers.py:516 +#: part/serializers.py:531 msgid "Select manufacturer (or leave blank to skip)" msgstr "" -#: part/serializers.py:526 +#: part/serializers.py:541 msgid "Manufacturer part number" msgstr "" -#: part/serializers.py:533 +#: part/serializers.py:548 msgid "Selected company is not a valid supplier" msgstr "" -#: part/serializers.py:542 +#: part/serializers.py:557 msgid "Selected company is not a valid manufacturer" msgstr "" -#: part/serializers.py:553 +#: part/serializers.py:568 msgid "Manufacturer part matching this MPN already exists" msgstr "" -#: part/serializers.py:560 +#: part/serializers.py:575 msgid "Supplier part matching this SKU already exists" msgstr "" -#: part/serializers.py:823 +#: part/serializers.py:838 msgid "External Stock" msgstr "" -#: part/serializers.py:825 +#: part/serializers.py:840 msgid "Unallocated Stock" msgstr "" -#: part/serializers.py:828 +#: part/serializers.py:843 msgid "Variant Stock" msgstr "" -#: part/serializers.py:856 part/templates/part/copy_part.html:9 +#: part/serializers.py:873 part/templates/part/copy_part.html:9 #: templates/js/translated/part.js:471 msgid "Duplicate Part" msgstr "" -#: part/serializers.py:857 +#: part/serializers.py:874 msgid "Copy initial data from another Part" msgstr "" -#: part/serializers.py:863 templates/js/translated/part.js:102 +#: part/serializers.py:880 templates/js/translated/part.js:102 msgid "Initial Stock" msgstr "" -#: part/serializers.py:864 +#: part/serializers.py:881 msgid "Create Part with initial stock quantity" msgstr "" -#: part/serializers.py:870 +#: part/serializers.py:887 msgid "Supplier Information" msgstr "" -#: part/serializers.py:871 +#: part/serializers.py:888 msgid "Add initial supplier information for this part" msgstr "" -#: part/serializers.py:879 +#: part/serializers.py:896 msgid "Copy Category Parameters" msgstr "" -#: part/serializers.py:880 +#: part/serializers.py:897 msgid "Copy parameter templates from selected part category" msgstr "" -#: part/serializers.py:885 +#: part/serializers.py:902 msgid "Existing Image" msgstr "" -#: part/serializers.py:886 +#: part/serializers.py:903 msgid "Filename of an existing part image" msgstr "" -#: part/serializers.py:903 +#: part/serializers.py:920 msgid "Image file does not exist" msgstr "" -#: part/serializers.py:1109 +#: part/serializers.py:1126 msgid "Limit stocktake report to a particular part, and any variant parts" msgstr "" -#: part/serializers.py:1119 +#: part/serializers.py:1136 msgid "Limit stocktake report to a particular part category, and any child categories" msgstr "" -#: part/serializers.py:1129 +#: part/serializers.py:1146 msgid "Limit stocktake report to a particular stock location, and any child locations" msgstr "" -#: part/serializers.py:1135 +#: part/serializers.py:1152 msgid "Exclude External Stock" msgstr "" -#: part/serializers.py:1136 +#: part/serializers.py:1153 msgid "Exclude stock items in external locations" msgstr "" -#: part/serializers.py:1141 +#: part/serializers.py:1158 msgid "Generate Report" msgstr "" -#: part/serializers.py:1142 +#: part/serializers.py:1159 msgid "Generate report file containing calculated stocktake data" msgstr "" -#: part/serializers.py:1147 +#: part/serializers.py:1164 msgid "Update Parts" msgstr "" -#: part/serializers.py:1148 +#: part/serializers.py:1165 msgid "Update specified parts with calculated stocktake data" msgstr "" -#: part/serializers.py:1156 +#: part/serializers.py:1173 msgid "Stocktake functionality is not enabled" msgstr "" -#: part/serializers.py:1262 +#: part/serializers.py:1279 msgid "Override calculated value for minimum price" msgstr "" -#: part/serializers.py:1269 +#: part/serializers.py:1286 msgid "Minimum price currency" msgstr "" -#: part/serializers.py:1277 +#: part/serializers.py:1294 msgid "Override calculated value for maximum price" msgstr "" -#: part/serializers.py:1284 +#: part/serializers.py:1301 msgid "Maximum price currency" msgstr "" -#: part/serializers.py:1313 +#: part/serializers.py:1330 msgid "Update" msgstr "" -#: part/serializers.py:1314 +#: part/serializers.py:1331 msgid "Update pricing for this part" msgstr "" -#: part/serializers.py:1337 +#: part/serializers.py:1354 #, python-brace-format msgid "Could not convert from provided currencies to {default_currency}" msgstr "" -#: part/serializers.py:1344 +#: part/serializers.py:1361 msgid "Minimum price must not be greater than maximum price" msgstr "" -#: part/serializers.py:1347 +#: part/serializers.py:1364 msgid "Maximum price must not be less than minimum price" msgstr "" -#: part/serializers.py:1714 +#: part/serializers.py:1731 msgid "Select part to copy BOM from" msgstr "" -#: part/serializers.py:1722 +#: part/serializers.py:1739 msgid "Remove Existing Data" msgstr "" -#: part/serializers.py:1723 +#: part/serializers.py:1740 msgid "Remove existing BOM items before copying" msgstr "" -#: part/serializers.py:1728 +#: part/serializers.py:1745 msgid "Include Inherited" msgstr "" -#: part/serializers.py:1729 +#: part/serializers.py:1746 msgid "Include BOM items which are inherited from templated parts" msgstr "" -#: part/serializers.py:1734 +#: part/serializers.py:1751 msgid "Skip Invalid Rows" msgstr "" -#: part/serializers.py:1735 +#: part/serializers.py:1752 msgid "Enable this option to skip invalid rows" msgstr "" -#: part/serializers.py:1740 +#: part/serializers.py:1757 msgid "Copy Substitute Parts" msgstr "" -#: part/serializers.py:1741 +#: part/serializers.py:1758 msgid "Copy substitute parts when duplicate BOM items" msgstr "" -#: part/serializers.py:1775 +#: part/serializers.py:1792 msgid "Clear Existing BOM" msgstr "" -#: part/serializers.py:1776 +#: part/serializers.py:1793 msgid "Delete existing BOM items before uploading" msgstr "" -#: part/serializers.py:1806 +#: part/serializers.py:1823 msgid "No part column specified" msgstr "" -#: part/serializers.py:1850 +#: part/serializers.py:1867 msgid "Multiple matching parts found" msgstr "" -#: part/serializers.py:1853 +#: part/serializers.py:1870 msgid "No matching part found" msgstr "" -#: part/serializers.py:1856 +#: part/serializers.py:1873 msgid "Part is not designated as a component" msgstr "" -#: part/serializers.py:1865 +#: part/serializers.py:1882 msgid "Quantity not provided" msgstr "" -#: part/serializers.py:1873 +#: part/serializers.py:1890 msgid "Invalid quantity" msgstr "" -#: part/serializers.py:1894 +#: part/serializers.py:1911 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 +#: templates/js/translated/purchase_order.js:2084 msgid "Total Quantity" msgstr "" @@ -7281,7 +7157,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:2215 users/models.py:204 +#: templates/js/translated/stock.js:2216 users/models.py:204 msgid "Stocktake" msgstr "" @@ -7379,15 +7255,15 @@ msgstr "" msgid "Part Manufacturers" msgstr "" -#: part/templates/part/detail.html:659 +#: part/templates/part/detail.html:655 msgid "Related Part" msgstr "" -#: part/templates/part/detail.html:667 +#: part/templates/part/detail.html:663 msgid "Add Related Part" msgstr "" -#: part/templates/part/detail.html:752 +#: part/templates/part/detail.html:748 msgid "Add Test Result Template" msgstr "" @@ -7446,7 +7322,7 @@ msgstr "" #: part/templates/part/part_base.html:52 #: stock/templates/stock/item_base.html:62 -#: stock/templates/stock/location.html:74 +#: stock/templates/stock/location.html:74 templates/js/translated/label.js:143 msgid "Print Label" msgstr "" @@ -7468,7 +7344,7 @@ msgstr "" msgid "Transfer part stock" msgstr "" -#: part/templates/part/part_base.html:91 templates/js/translated/part.js:2293 +#: part/templates/part/part_base.html:91 templates/js/translated/part.js:2292 msgid "Part actions" msgstr "" @@ -7517,7 +7393,7 @@ msgid "Part is virtual (not a physical part)" msgstr "" #: part/templates/part/part_base.html:163 -#: part/templates/part/part_base.html:682 +#: part/templates/part/part_base.html:681 msgid "Show Part Details" msgstr "" @@ -7540,7 +7416,7 @@ msgid "Minimum stock level" msgstr "" #: part/templates/part/part_base.html:322 templates/js/translated/bom.js:1071 -#: templates/js/translated/part.js:1264 templates/js/translated/part.js:2444 +#: templates/js/translated/part.js:1264 templates/js/translated/part.js:2443 #: templates/js/translated/pricing.js:391 #: templates/js/translated/pricing.js:1054 msgid "Price Range" @@ -7563,19 +7439,19 @@ msgstr "" msgid "Link Barcode to Part" msgstr "" -#: part/templates/part/part_base.html:512 +#: part/templates/part/part_base.html:511 msgid "Calculate" msgstr "" -#: part/templates/part/part_base.html:529 +#: part/templates/part/part_base.html:528 msgid "Remove associated image from this part" msgstr "" -#: part/templates/part/part_base.html:580 +#: part/templates/part/part_base.html:579 msgid "No matching images found" msgstr "" -#: part/templates/part/part_base.html:676 +#: part/templates/part/part_base.html:675 msgid "Hide Part Details" msgstr "" @@ -7634,8 +7510,8 @@ msgstr "" #: 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 +#: templates/js/translated/part.js:2391 templates/js/translated/stock.js:1059 +#: templates/js/translated/stock.js:2070 templates/navbar.html:31 msgid "Stock" msgstr "" @@ -7681,7 +7557,7 @@ msgstr "" #: stock/templates/stock/item_base.html:446 #: templates/js/translated/company.js:1703 #: templates/js/translated/company.js:1713 -#: templates/js/translated/stock.js:2245 +#: templates/js/translated/stock.js:2246 msgid "Last Updated" msgstr "" @@ -7753,7 +7629,7 @@ msgid "Update Pricing" msgstr "" #: part/templates/part/stock_count.html:7 -#: templates/js/translated/model_renderers.js:221 +#: templates/js/translated/model_renderers.js:227 #: templates/js/translated/part.js:704 templates/js/translated/part.js:2140 #: templates/js/translated/part.js:2142 msgid "No Stock" @@ -7833,7 +7709,7 @@ msgstr "" msgid "Part Pricing" msgstr "" -#: plugin/api.py:168 +#: plugin/api.py:170 msgid "Plugin cannot be deleted as it is currently active" msgstr "" @@ -7899,8 +7775,8 @@ msgstr "" 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 +#: plugin/base/barcodes/api.py:550 templates/js/translated/build.js:2589 +#: templates/js/translated/sales_order.js:1953 msgid "Insufficient stock available" msgstr "" @@ -7994,20 +7870,20 @@ msgstr "" msgid "Quantity to allocate" msgstr "" -#: plugin/base/label/label.py:39 +#: plugin/base/label/label.py:39 templates/js/translated/label.js:155 msgid "Label printing failed" msgstr "" -#: plugin/base/label/mixins.py:63 +#: plugin/base/label/mixins.py:56 msgid "Error rendering label to PDF" msgstr "" -#: plugin/base/label/mixins.py:76 +#: plugin/base/label/mixins.py:70 msgid "Error rendering label to HTML" msgstr "" -#: plugin/base/label/mixins.py:111 -msgid "Error rendering label to PNG" +#: plugin/base/label/mixins.py:151 +msgid "No items provided to print" msgstr "" #: plugin/builtin/barcodes/inventree_barcode.py:25 @@ -8021,7 +7897,7 @@ 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_label.py:22 #: plugin/builtin/labels/inventree_machine.py:64 #: plugin/builtin/labels/label_sheet.py:63 #: plugin/builtin/suppliers/digikey.py:19 plugin/builtin/suppliers/lcsc.py:21 @@ -8075,19 +7951,19 @@ msgstr "" msgid "Default currency exchange integration" msgstr "" -#: plugin/builtin/labels/inventree_label.py:20 +#: plugin/builtin/labels/inventree_label.py:19 msgid "InvenTree PDF label printer" msgstr "" -#: plugin/builtin/labels/inventree_label.py:21 +#: plugin/builtin/labels/inventree_label.py:20 msgid "Provides native support for printing PDF labels" msgstr "" -#: plugin/builtin/labels/inventree_label.py:29 +#: plugin/builtin/labels/inventree_label.py:28 msgid "Debug mode" msgstr "" -#: plugin/builtin/labels/inventree_label.py:30 +#: plugin/builtin/labels/inventree_label.py:29 msgid "Enable debug mode - returns raw HTML instead of PDF" msgstr "" @@ -8099,11 +7975,11 @@ msgstr "" msgid "Provides support for printing using a machine" msgstr "" -#: plugin/builtin/labels/inventree_machine.py:150 +#: plugin/builtin/labels/inventree_machine.py:151 msgid "last used" msgstr "" -#: plugin/builtin/labels/inventree_machine.py:167 +#: plugin/builtin/labels/inventree_machine.py:168 msgid "Options" msgstr "" @@ -8127,7 +8003,7 @@ msgstr "" msgid "Print a border around each label" msgstr "" -#: plugin/builtin/labels/label_sheet.py:47 report/models.py:209 +#: plugin/builtin/labels/label_sheet.py:47 report/models.py:307 msgid "Landscape" msgstr "" @@ -8143,11 +8019,11 @@ msgstr "" msgid "Arrays multiple labels onto a single sheet" msgstr "" -#: plugin/builtin/labels/label_sheet.py:94 +#: plugin/builtin/labels/label_sheet.py:99 msgid "Label is too large for page size" msgstr "" -#: plugin/builtin/labels/label_sheet.py:128 +#: plugin/builtin/labels/label_sheet.py:133 msgid "No labels were generated" msgstr "" @@ -8240,61 +8116,62 @@ msgstr "" msgid "Uninstalled plugin successfully" msgstr "" -#: plugin/models.py:30 +#: plugin/models.py:35 msgid "Plugin Configuration" msgstr "" -#: plugin/models.py:31 +#: plugin/models.py:36 msgid "Plugin Configurations" msgstr "" -#: plugin/models.py:34 users/models.py:100 +#: plugin/models.py:42 users/models.py:100 msgid "Key" msgstr "" -#: plugin/models.py:34 +#: plugin/models.py:43 msgid "Key of plugin" msgstr "" -#: plugin/models.py:42 +#: plugin/models.py:51 msgid "PluginName of the plugin" msgstr "" -#: plugin/models.py:49 plugin/serializers.py:90 +#: plugin/models.py:58 plugin/serializers.py:90 msgid "Package Name" msgstr "" -#: plugin/models.py:51 +#: plugin/models.py:60 msgid "Name of the installed package, if the plugin was installed via PIP" msgstr "" -#: plugin/models.py:56 +#: plugin/models.py:65 msgid "Is the plugin active" msgstr "" -#: plugin/models.py:147 templates/js/translated/table_filters.js:370 +#: plugin/models.py:156 templates/js/translated/table_filters.js:370 #: templates/js/translated/table_filters.js:504 msgid "Installed" msgstr "" -#: plugin/models.py:156 +#: plugin/models.py:165 msgid "Sample plugin" msgstr "" -#: plugin/models.py:164 +#: plugin/models.py:173 msgid "Builtin Plugin" msgstr "" -#: plugin/models.py:172 +#: plugin/models.py:181 msgid "Package Plugin" msgstr "" -#: plugin/models.py:196 templates/InvenTree/settings/plugin_settings.html:9 +#: plugin/models.py:205 report/models.py:474 +#: templates/InvenTree/settings/plugin_settings.html:9 #: templates/js/translated/plugin.js:51 msgid "Plugin" msgstr "" -#: plugin/models.py:243 +#: plugin/models.py:252 msgid "Method" msgstr "" @@ -8302,17 +8179,17 @@ msgstr "" msgid "No author found" msgstr "" -#: plugin/registry.py:588 +#: plugin/registry.py:597 #, python-brace-format msgid "Plugin '{p}' is not compatible with the current InvenTree version {v}" msgstr "" -#: plugin/registry.py:591 +#: plugin/registry.py:600 #, python-brace-format msgid "Plugin requires at least version {v}" msgstr "" -#: plugin/registry.py:593 +#: plugin/registry.py:602 #, python-brace-format msgid "Plugin requires at most version {v}" msgstr "" @@ -8395,279 +8272,363 @@ msgstr "" msgid "Either packagename of URL must be provided" msgstr "" -#: plugin/serializers.py:156 +#: plugin/serializers.py:161 msgid "Full reload" msgstr "" -#: plugin/serializers.py:157 +#: plugin/serializers.py:162 msgid "Perform a full reload of the plugin registry" msgstr "" -#: plugin/serializers.py:163 +#: plugin/serializers.py:168 msgid "Force reload" msgstr "" -#: plugin/serializers.py:165 +#: plugin/serializers.py:170 msgid "Force a reload of the plugin registry, even if it is already loaded" msgstr "" -#: plugin/serializers.py:172 +#: plugin/serializers.py:177 msgid "Collect plugins" msgstr "" -#: plugin/serializers.py:173 +#: plugin/serializers.py:178 msgid "Collect plugins and add them to the registry" msgstr "" -#: plugin/serializers.py:195 +#: plugin/serializers.py:205 msgid "Activate Plugin" msgstr "" -#: plugin/serializers.py:196 +#: plugin/serializers.py:206 msgid "Activate this plugin" msgstr "" -#: plugin/serializers.py:219 +#: plugin/serializers.py:234 msgid "Delete configuration" msgstr "" -#: plugin/serializers.py:220 +#: plugin/serializers.py:235 msgid "Delete the plugin configuration from the database" msgstr "" -#: report/api.py:158 +#: report/api.py:77 msgid "No valid objects provided to template" msgstr "" -#: report/api.py:197 report/api.py:234 +#: report/api.py:89 report/serializers.py:53 +msgid "Model Type" +msgstr "" + +#: report/api.py:92 report/models.py:438 report/serializers.py:98 +#: report/serializers.py:148 templates/js/translated/purchase_order.js:1747 +#: templates/js/translated/return_order.js:353 +#: templates/js/translated/sales_order.js:887 +#: templates/js/translated/sales_order.js:1047 +msgid "Items" +msgstr "" + +#: report/api.py:168 +msgid "Plugin not found" +msgstr "" + +#: report/api.py:170 +msgid "Plugin is not active" +msgstr "" + +#: report/api.py:172 +msgid "Plugin does not support label printing" +msgstr "" + +#: report/api.py:221 +msgid "Invalid label dimensions" +msgstr "" + +#: report/api.py:236 report/api.py:316 +msgid "No valid items provided to template" +msgstr "" + +#: report/api.py:271 +msgid "Error printing label" +msgstr "" + +#: report/api.py:362 report/api.py:398 #, 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 +#: report/helpers.py:41 msgid "A4" msgstr "" -#: report/helpers.py:16 +#: report/helpers.py:42 msgid "A3" msgstr "" -#: report/helpers.py:17 +#: report/helpers.py:43 msgid "Legal" msgstr "" -#: report/helpers.py:18 +#: report/helpers.py:44 msgid "Letter" msgstr "" -#: report/models.py:177 +#: report/models.py:118 +msgid "Template file with this name already exists" +msgstr "" + +#: report/models.py:150 msgid "Template name" msgstr "" -#: report/models.py:183 -msgid "Report template file" +#: report/models.py:156 +msgid "Template description" msgstr "" -#: report/models.py:190 -msgid "Report template description" +#: report/models.py:162 +msgid "Revision number (auto-increments)" msgstr "" -#: report/models.py:196 -msgid "Report revision number (auto-increments)" +#: report/models.py:202 +msgid "Filename Pattern" msgstr "" -#: report/models.py:204 +#: report/models.py:203 +msgid "Pattern for generating filenames" +msgstr "" + +#: report/models.py:208 +msgid "Template is enabled" +msgstr "" + +#: report/models.py:214 +msgid "Target model type for template" +msgstr "" + +#: report/models.py:234 +msgid "Filters" +msgstr "" + +#: report/models.py:235 +msgid "Template query filters (comma-separated list of key=value pairs)" +msgstr "" + +#: report/models.py:294 report/models.py:361 +msgid "Template file" +msgstr "" + +#: report/models.py:302 msgid "Page size for PDF reports" msgstr "" -#: report/models.py:210 +#: report/models.py:308 msgid "Render report in landscape orientation" msgstr "" -#: report/models.py:318 -msgid "Pattern for generating report filenames" +#: report/models.py:367 +msgid "Width [mm]" msgstr "" -#: report/models.py:325 -msgid "Report template is enabled" +#: report/models.py:368 +msgid "Label width, specified in mm" msgstr "" -#: report/models.py:347 -msgid "StockItem query filters (comma-separated list of key=value pairs)" +#: report/models.py:374 +msgid "Height [mm]" msgstr "" -#: report/models.py:354 -msgid "Include Installed Tests" +#: report/models.py:375 +msgid "Label height, specified in mm" msgstr "" -#: report/models.py:356 -msgid "Include test results for stock items installed inside assembled item" +#: report/models.py:438 +msgid "Number of items to process" msgstr "" -#: report/models.py:424 -msgid "Build Filters" +#: report/models.py:444 +msgid "Report generation is complete" msgstr "" -#: report/models.py:425 -msgid "Build query filters (comma-separated list of key=value pairs" +#: report/models.py:448 templates/js/translated/build.js:2177 +msgid "Progress" msgstr "" -#: report/models.py:464 -msgid "Part Filters" +#: report/models.py:448 +msgid "Report generation progress" msgstr "" -#: report/models.py:465 -msgid "Part query filters (comma-separated list of key=value pairs" +#: report/models.py:456 +msgid "Report Template" msgstr "" -#: report/models.py:497 -msgid "Purchase order query filters" +#: report/models.py:463 report/models.py:486 +msgid "Output File" msgstr "" -#: report/models.py:533 -msgid "Sales order query filters" +#: report/models.py:464 report/models.py:487 +msgid "Generated output file" msgstr "" -#: report/models.py:569 -msgid "Return order query filters" +#: report/models.py:475 +msgid "Label output plugin" msgstr "" -#: report/models.py:641 -msgid "Snippet file with this name already exists" +#: report/models.py:479 +msgid "Label Template" msgstr "" -#: report/models.py:648 +#: report/models.py:502 msgid "Snippet" msgstr "" -#: report/models.py:649 +#: report/models.py:503 msgid "Report snippet file" msgstr "" -#: report/models.py:656 +#: report/models.py:510 msgid "Snippet file description" msgstr "" -#: report/models.py:714 -msgid "Asset file with this name already exists" -msgstr "" - -#: report/models.py:722 +#: report/models.py:528 msgid "Asset" msgstr "" -#: report/models.py:723 +#: report/models.py:529 msgid "Report asset file" msgstr "" -#: report/models.py:730 +#: report/models.py:536 msgid "Asset file description" msgstr "" -#: report/models.py:752 -msgid "stock location query filters (comma-separated list of key=value pairs)" +#: report/serializers.py:91 +msgid "Select report template" +msgstr "" + +#: report/serializers.py:99 report/serializers.py:149 +msgid "List of item primary keys to include in the report" +msgstr "" + +#: report/serializers.py:132 +msgid "Select label template" +msgstr "" + +#: report/serializers.py:140 +msgid "Printing Plugin" +msgstr "" + +#: report/serializers.py:141 +msgid "Select plugin to use for label printing" +msgstr "" + +#: report/templates/label/part_label.html:31 +#: report/templates/label/stockitem_qr.html:21 +#: report/templates/label/stocklocation_qr.html:20 +#: templates/allauth_2fa/setup.html:18 +msgid "QR Code" +msgstr "" + +#: report/templates/label/part_label_code128.html:31 +#: report/templates/label/stocklocation_qr_and_text.html:31 +#: templates/qr_code.html:7 +msgid "QR code" msgstr "" #: report/templates/report/inventree_bill_of_materials_report.html:133 msgid "Materials needed" msgstr "" -#: report/templates/report/inventree_build_order_base.html:146 +#: report/templates/report/inventree_build_order_report.html:146 msgid "Required For" msgstr "" -#: report/templates/report/inventree_po_report_base.html:15 +#: report/templates/report/inventree_purchase_order_report.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 +#: report/templates/report/inventree_purchase_order_report.html:30 +#: report/templates/report/inventree_sales_order_report.html:30 #: templates/js/translated/order.js:316 templates/js/translated/pricing.js:527 #: templates/js/translated/pricing.js:596 #: templates/js/translated/pricing.js:834 -#: templates/js/translated/purchase_order.js:2116 -#: templates/js/translated/sales_order.js:1837 +#: templates/js/translated/purchase_order.js:2115 +#: templates/js/translated/sales_order.js:1873 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 +#: report/templates/report/inventree_purchase_order_report.html:55 +#: report/templates/report/inventree_return_order_report.html:48 +#: report/templates/report/inventree_sales_order_report.html:55 msgid "Extra Line Items" msgstr "" -#: report/templates/report/inventree_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 +#: report/templates/report/inventree_purchase_order_report.html:72 +#: report/templates/report/inventree_sales_order_report.html:72 +#: templates/js/translated/purchase_order.js:2017 +#: templates/js/translated/sales_order.js:1842 msgid "Total" msgstr "" -#: report/templates/report/inventree_return_order_report_base.html:25 -#: report/templates/report/inventree_test_report_base.html:88 -#: stock/models.py:809 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 +#: report/templates/report/inventree_return_order_report.html:25 +#: report/templates/report/inventree_test_report.html:88 stock/models.py:826 +#: stock/serializers.py:150 stock/templates/stock/item_base.html:311 +#: templates/js/translated/build.js:519 templates/js/translated/build.js:1367 +#: templates/js/translated/build.js:2355 +#: templates/js/translated/model_renderers.js:230 +#: templates/js/translated/return_order.js:539 +#: templates/js/translated/return_order.js:723 #: templates/js/translated/sales_order.js:315 -#: templates/js/translated/sales_order.js:1611 -#: templates/js/translated/sales_order.js:1696 +#: templates/js/translated/sales_order.js:1647 +#: templates/js/translated/sales_order.js:1732 #: templates/js/translated/stock.js:596 msgid "Serial Number" msgstr "" -#: report/templates/report/inventree_slr_report.html:97 +#: report/templates/report/inventree_stock_location_report.html:97 msgid "Stock location items" msgstr "" -#: report/templates/report/inventree_test_report_base.html:21 +#: report/templates/report/inventree_test_report.html:21 msgid "Stock Item Test Report" msgstr "" -#: report/templates/report/inventree_test_report_base.html:97 +#: report/templates/report/inventree_test_report.html:97 msgid "Test Results" msgstr "" -#: report/templates/report/inventree_test_report_base.html:102 -#: templates/js/translated/stock.js:1492 +#: report/templates/report/inventree_test_report.html:102 +#: templates/js/translated/stock.js:1495 msgid "Test" msgstr "" -#: report/templates/report/inventree_test_report_base.html:103 -#: stock/models.py:2430 +#: report/templates/report/inventree_test_report.html:103 stock/models.py:2423 msgid "Result" msgstr "" -#: report/templates/report/inventree_test_report_base.html:130 +#: report/templates/report/inventree_test_report.html:130 msgid "Pass" msgstr "" -#: report/templates/report/inventree_test_report_base.html:132 +#: report/templates/report/inventree_test_report.html:132 msgid "Fail" msgstr "" -#: report/templates/report/inventree_test_report_base.html:139 +#: report/templates/report/inventree_test_report.html:139 msgid "No result (required)" msgstr "" -#: report/templates/report/inventree_test_report_base.html:141 +#: report/templates/report/inventree_test_report.html:141 msgid "No result" msgstr "" -#: report/templates/report/inventree_test_report_base.html:154 +#: report/templates/report/inventree_test_report.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 +#: report/templates/report/inventree_test_report.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 "" @@ -8724,7 +8685,7 @@ msgstr "" msgid "Customer ID" msgstr "" -#: stock/admin.py:201 stock/models.py:789 +#: stock/admin.py:201 stock/models.py:806 #: stock/templates/stock/item_base.html:354 msgid "Installed In" msgstr "" @@ -8749,555 +8710,723 @@ msgstr "" msgid "Delete on Deplete" msgstr "" -#: stock/admin.py:256 stock/models.py:883 +#: stock/admin.py:256 stock/models.py:900 #: stock/templates/stock/item_base.html:433 -#: templates/js/translated/stock.js:2229 users/models.py:124 +#: templates/js/translated/stock.js:2230 users/models.py:124 msgid "Expiry Date" msgstr "" -#: stock/api.py:284 +#: stock/api.py:318 msgid "Filter by location depth" msgstr "" -#: stock/api.py:304 +#: stock/api.py:338 msgid "Include sub-locations in filtered results" msgstr "" -#: stock/api.py:325 +#: stock/api.py:359 msgid "Parent Location" msgstr "" -#: stock/api.py:326 +#: stock/api.py:360 msgid "Filter by parent location" msgstr "" -#: stock/api.py:579 templates/js/translated/table_filters.js:427 +#: stock/api.py:615 templates/js/translated/table_filters.js:427 msgid "External Location" msgstr "" -#: stock/api.py:767 +#: stock/api.py:803 msgid "Part Tree" msgstr "" -#: stock/api.py:797 +#: stock/api.py:833 msgid "Expiry date before" msgstr "" -#: stock/api.py:801 +#: stock/api.py:837 msgid "Expiry date after" msgstr "" -#: stock/api.py:804 stock/templates/stock/item_base.html:439 +#: stock/api.py:840 stock/templates/stock/item_base.html:439 #: templates/js/translated/table_filters.js:441 msgid "Stale" msgstr "" -#: stock/api.py:891 +#: stock/api.py:927 msgid "Quantity is required" msgstr "" -#: stock/api.py:897 +#: stock/api.py:933 msgid "Valid part must be supplied" msgstr "" -#: stock/api.py:928 +#: stock/api.py:964 msgid "The given supplier part does not exist" msgstr "" -#: stock/api.py:938 +#: stock/api.py:974 msgid "The supplier part has a pack size defined, but flag use_pack_size not set" msgstr "" -#: stock/api.py:969 +#: stock/api.py:1005 msgid "Serial numbers cannot be supplied for a non-trackable part" msgstr "" -#: stock/models.py:63 +#: stock/models.py:59 msgid "Stock Location type" msgstr "" -#: stock/models.py:64 +#: stock/models.py:60 msgid "Stock Location types" msgstr "" -#: stock/models.py:90 +#: stock/models.py:86 msgid "Default icon for all locations that have no icon set (optional)" msgstr "" -#: stock/models.py:125 stock/models.py:771 +#: stock/models.py:123 stock/models.py:788 #: 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 +#: stock/models.py:124 stock/templates/stock/location.html:186 #: templates/InvenTree/search.html:166 templates/js/translated/search.js:178 #: users/models.py:205 msgid "Stock Locations" msgstr "" -#: stock/models.py:158 stock/models.py:932 +#: stock/models.py:166 stock/models.py:949 #: stock/templates/stock/item_base.html:247 msgid "Owner" msgstr "" -#: stock/models.py:159 stock/models.py:933 +#: stock/models.py:167 stock/models.py:950 msgid "Select Owner" msgstr "" -#: stock/models.py:167 +#: stock/models.py:175 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 +#: stock/models.py:182 templates/js/translated/stock.js:2781 #: templates/js/translated/table_filters.js:243 msgid "External" msgstr "" -#: stock/models.py:175 +#: stock/models.py:183 msgid "This is an external stock location" msgstr "" -#: stock/models.py:181 templates/js/translated/stock.js:2790 +#: stock/models.py:189 templates/js/translated/stock.js:2790 #: templates/js/translated/table_filters.js:246 msgid "Location type" msgstr "" -#: stock/models.py:185 +#: stock/models.py:193 msgid "Stock location type of this location" msgstr "" -#: stock/models.py:254 +#: stock/models.py:262 msgid "You cannot make this stock location structural because some stock items are already located into it!" msgstr "" -#: stock/models.py:626 +#: stock/models.py:643 msgid "Stock items cannot be located into structural stock locations!" msgstr "" -#: stock/models.py:653 stock/serializers.py:290 +#: stock/models.py:670 stock/serializers.py:419 msgid "Stock item cannot be created for virtual parts" msgstr "" -#: stock/models.py:670 +#: stock/models.py:687 #, python-brace-format msgid "Part type ('{self.supplier_part.part}') must be {self.part}" msgstr "" -#: stock/models.py:680 stock/models.py:693 +#: stock/models.py:697 stock/models.py:710 msgid "Quantity must be 1 for item with a serial number" msgstr "" -#: stock/models.py:683 +#: stock/models.py:700 msgid "Serial number cannot be set if quantity greater than 1" msgstr "" -#: stock/models.py:707 +#: stock/models.py:724 msgid "Item cannot belong to itself" msgstr "" -#: stock/models.py:712 +#: stock/models.py:729 msgid "Item must have a build reference if is_building=True" msgstr "" -#: stock/models.py:725 +#: stock/models.py:742 msgid "Build reference does not point to the same part object" msgstr "" -#: stock/models.py:741 +#: stock/models.py:758 msgid "Parent Stock Item" msgstr "" -#: stock/models.py:753 +#: stock/models.py:770 msgid "Base part" msgstr "" -#: stock/models.py:763 +#: stock/models.py:780 msgid "Select a matching supplier part for this stock item" msgstr "" -#: stock/models.py:775 +#: stock/models.py:792 msgid "Where is this stock item located?" msgstr "" -#: stock/models.py:783 stock/serializers.py:1351 +#: stock/models.py:800 stock/serializers.py:1480 msgid "Packaging this stock item is stored in" msgstr "" -#: stock/models.py:794 +#: stock/models.py:811 msgid "Is this item installed in another item?" msgstr "" -#: stock/models.py:813 +#: stock/models.py:830 msgid "Serial number for this item" msgstr "" -#: stock/models.py:827 stock/serializers.py:1334 +#: stock/models.py:844 stock/serializers.py:1463 msgid "Batch code for this stock item" msgstr "" -#: stock/models.py:832 +#: stock/models.py:849 msgid "Stock Quantity" msgstr "" -#: stock/models.py:842 +#: stock/models.py:859 msgid "Source Build" msgstr "" -#: stock/models.py:845 +#: stock/models.py:862 msgid "Build for this stock item" msgstr "" -#: stock/models.py:852 stock/templates/stock/item_base.html:363 +#: stock/models.py:869 stock/templates/stock/item_base.html:363 msgid "Consumed By" msgstr "" -#: stock/models.py:855 +#: stock/models.py:872 msgid "Build order which consumed this stock item" msgstr "" -#: stock/models.py:864 +#: stock/models.py:881 msgid "Source Purchase Order" msgstr "" -#: stock/models.py:868 +#: stock/models.py:885 msgid "Purchase order for this stock item" msgstr "" -#: stock/models.py:874 +#: stock/models.py:891 msgid "Destination Sales Order" msgstr "" -#: stock/models.py:885 +#: stock/models.py:902 msgid "Expiry date for stock item. Stock will be considered expired after this date" msgstr "" -#: stock/models.py:903 +#: stock/models.py:920 msgid "Delete on deplete" msgstr "" -#: stock/models.py:904 +#: stock/models.py:921 msgid "Delete this Stock Item when stock is depleted" msgstr "" -#: stock/models.py:924 +#: stock/models.py:941 msgid "Single unit purchase price at time of purchase" msgstr "" -#: stock/models.py:955 +#: stock/models.py:972 msgid "Converted to part" msgstr "" -#: stock/models.py:1465 +#: stock/models.py:1490 msgid "Part is not set as trackable" msgstr "" -#: stock/models.py:1471 +#: stock/models.py:1496 msgid "Quantity must be integer" msgstr "" -#: stock/models.py:1479 +#: stock/models.py:1504 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({self.quantity})" msgstr "" -#: stock/models.py:1485 +#: stock/models.py:1510 msgid "Serial numbers must be a list of integers" msgstr "" -#: stock/models.py:1490 +#: stock/models.py:1515 msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:1498 stock/serializers.py:529 +#: stock/models.py:1523 stock/serializers.py:658 msgid "Serial numbers already exist" msgstr "" -#: stock/models.py:1595 +#: stock/models.py:1620 msgid "Test template does not exist" msgstr "" -#: stock/models.py:1613 +#: stock/models.py:1638 msgid "Stock item has been assigned to a sales order" msgstr "" -#: stock/models.py:1617 +#: stock/models.py:1642 msgid "Stock item is installed in another item" msgstr "" -#: stock/models.py:1620 +#: stock/models.py:1645 msgid "Stock item contains other items" msgstr "" -#: stock/models.py:1623 +#: stock/models.py:1648 msgid "Stock item has been assigned to a customer" msgstr "" -#: stock/models.py:1626 +#: stock/models.py:1651 msgid "Stock item is currently in production" msgstr "" -#: stock/models.py:1629 +#: stock/models.py:1654 msgid "Serialized stock cannot be merged" msgstr "" -#: stock/models.py:1636 stock/serializers.py:1240 +#: stock/models.py:1661 stock/serializers.py:1369 msgid "Duplicate stock items" msgstr "" -#: stock/models.py:1640 +#: stock/models.py:1665 msgid "Stock items must refer to the same part" msgstr "" -#: stock/models.py:1648 +#: stock/models.py:1673 msgid "Stock items must refer to the same supplier part" msgstr "" -#: stock/models.py:1653 +#: stock/models.py:1678 msgid "Stock status codes must match" msgstr "" -#: stock/models.py:1870 +#: stock/models.py:1905 msgid "StockItem cannot be moved as it is not in stock" msgstr "" -#: stock/models.py:2333 +#: stock/models.py:2326 msgid "Entry notes" msgstr "" -#: stock/models.py:2398 +#: stock/models.py:2391 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:2403 +#: stock/models.py:2396 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:2430 +#: stock/models.py:2423 msgid "Test result" msgstr "" -#: stock/models.py:2437 +#: stock/models.py:2430 msgid "Test output value" msgstr "" -#: stock/models.py:2445 +#: stock/models.py:2438 msgid "Test result attachment" msgstr "" -#: stock/models.py:2449 +#: stock/models.py:2442 msgid "Test notes" msgstr "" -#: stock/models.py:2457 templates/js/translated/stock.js:1545 +#: stock/models.py:2450 templates/js/translated/stock.js:1548 msgid "Test station" msgstr "" -#: stock/models.py:2458 +#: stock/models.py:2451 msgid "The identifier of the test station where the test was performed" msgstr "" -#: stock/models.py:2464 +#: stock/models.py:2457 msgid "Started" msgstr "" -#: stock/models.py:2465 +#: stock/models.py:2458 msgid "The timestamp of the test start" msgstr "" -#: stock/models.py:2471 +#: stock/models.py:2464 msgid "Finished" msgstr "" -#: stock/models.py:2472 +#: stock/models.py:2465 msgid "The timestamp of the test finish" msgstr "" -#: stock/serializers.py:100 +#: stock/serializers.py:75 +msgid "Generated batch code" +msgstr "" + +#: stock/serializers.py:84 +msgid "Select build order" +msgstr "" + +#: stock/serializers.py:93 +msgid "Select stock item to generate batch code for" +msgstr "" + +#: stock/serializers.py:102 +msgid "Select location to generate batch code for" +msgstr "" + +#: stock/serializers.py:111 +msgid "Select part to generate batch code for" +msgstr "" + +#: stock/serializers.py:120 +msgid "Select purchase order" +msgstr "" + +#: stock/serializers.py:127 +msgid "Enter quantity for batch code" +msgstr "" + +#: stock/serializers.py:150 +msgid "Generated serial number" +msgstr "" + +#: stock/serializers.py:159 +msgid "Select part to generate serial number for" +msgstr "" + +#: stock/serializers.py:167 +msgid "Quantity of serial numbers to generate" +msgstr "" + +#: stock/serializers.py:229 msgid "Test template for this result" msgstr "" -#: stock/serializers.py:119 +#: stock/serializers.py:248 msgid "Template ID or test name must be provided" msgstr "" -#: stock/serializers.py:151 +#: stock/serializers.py:280 msgid "The test finished time cannot be earlier than the test started time" msgstr "" -#: stock/serializers.py:184 +#: stock/serializers.py:313 msgid "Serial number is too large" msgstr "" -#: stock/serializers.py:282 +#: stock/serializers.py:411 msgid "Use pack size when adding: the quantity defined is the number of packs" msgstr "" -#: stock/serializers.py:402 +#: stock/serializers.py:531 msgid "Purchase price of this stock item, per unit or pack" msgstr "" -#: stock/serializers.py:464 +#: stock/serializers.py:593 msgid "Enter number of stock items to serialize" msgstr "" -#: stock/serializers.py:477 +#: stock/serializers.py:606 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({q})" msgstr "" -#: stock/serializers.py:484 +#: stock/serializers.py:613 msgid "Enter serial numbers for new items" msgstr "" -#: stock/serializers.py:495 stock/serializers.py:1197 stock/serializers.py:1453 +#: stock/serializers.py:624 stock/serializers.py:1326 stock/serializers.py:1582 msgid "Destination stock location" msgstr "" -#: stock/serializers.py:502 +#: stock/serializers.py:631 msgid "Optional note field" msgstr "" -#: stock/serializers.py:512 +#: stock/serializers.py:641 msgid "Serial numbers cannot be assigned to this part" msgstr "" -#: stock/serializers.py:567 +#: stock/serializers.py:696 msgid "Select stock item to install" msgstr "" -#: stock/serializers.py:574 +#: stock/serializers.py:703 msgid "Quantity to Install" msgstr "" -#: stock/serializers.py:575 +#: stock/serializers.py:704 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 +#: stock/serializers.py:709 stock/serializers.py:789 stock/serializers.py:885 +#: stock/serializers.py:935 msgid "Add transaction note (optional)" msgstr "" -#: stock/serializers.py:588 +#: stock/serializers.py:717 msgid "Quantity to install must be at least 1" msgstr "" -#: stock/serializers.py:596 +#: stock/serializers.py:725 msgid "Stock item is unavailable" msgstr "" -#: stock/serializers.py:607 +#: stock/serializers.py:736 msgid "Selected part is not in the Bill of Materials" msgstr "" -#: stock/serializers.py:620 +#: stock/serializers.py:749 msgid "Quantity to install must not exceed available quantity" msgstr "" -#: stock/serializers.py:655 +#: stock/serializers.py:784 msgid "Destination location for uninstalled item" msgstr "" -#: stock/serializers.py:690 +#: stock/serializers.py:819 msgid "Select part to convert stock item into" msgstr "" -#: stock/serializers.py:703 +#: stock/serializers.py:832 msgid "Selected part is not a valid option for conversion" msgstr "" -#: stock/serializers.py:720 +#: stock/serializers.py:849 msgid "Cannot convert stock item with assigned SupplierPart" msgstr "" -#: stock/serializers.py:751 +#: stock/serializers.py:880 msgid "Destination location for returned item" msgstr "" -#: stock/serializers.py:788 +#: stock/serializers.py:917 msgid "Select stock items to change status" msgstr "" -#: stock/serializers.py:794 +#: stock/serializers.py:923 msgid "No stock items selected" msgstr "" -#: stock/serializers.py:890 stock/serializers.py:953 +#: stock/serializers.py:1019 stock/serializers.py:1082 #: stock/templates/stock/location.html:165 -#: stock/templates/stock/location.html:213 +#: stock/templates/stock/location.html:220 #: stock/templates/stock/location_sidebar.html:5 msgid "Sublocations" msgstr "" -#: stock/serializers.py:1069 +#: stock/serializers.py:1198 msgid "Part must be salable" msgstr "" -#: stock/serializers.py:1073 +#: stock/serializers.py:1202 msgid "Item is allocated to a sales order" msgstr "" -#: stock/serializers.py:1077 +#: stock/serializers.py:1206 msgid "Item is allocated to a build order" msgstr "" -#: stock/serializers.py:1101 +#: stock/serializers.py:1230 msgid "Customer to assign stock items" msgstr "" -#: stock/serializers.py:1107 +#: stock/serializers.py:1236 msgid "Selected company is not a customer" msgstr "" -#: stock/serializers.py:1115 +#: stock/serializers.py:1244 msgid "Stock assignment notes" msgstr "" -#: stock/serializers.py:1125 stock/serializers.py:1379 +#: stock/serializers.py:1254 stock/serializers.py:1508 msgid "A list of stock items must be provided" msgstr "" -#: stock/serializers.py:1204 +#: stock/serializers.py:1333 msgid "Stock merging notes" msgstr "" -#: stock/serializers.py:1209 +#: stock/serializers.py:1338 msgid "Allow mismatched suppliers" msgstr "" -#: stock/serializers.py:1210 +#: stock/serializers.py:1339 msgid "Allow stock items with different supplier parts to be merged" msgstr "" -#: stock/serializers.py:1215 +#: stock/serializers.py:1344 msgid "Allow mismatched status" msgstr "" -#: stock/serializers.py:1216 +#: stock/serializers.py:1345 msgid "Allow stock items with different status codes to be merged" msgstr "" -#: stock/serializers.py:1226 +#: stock/serializers.py:1355 msgid "At least two stock items must be provided" msgstr "" -#: stock/serializers.py:1293 +#: stock/serializers.py:1422 msgid "No Change" msgstr "" -#: stock/serializers.py:1322 +#: stock/serializers.py:1451 msgid "StockItem primary key value" msgstr "" -#: stock/serializers.py:1341 +#: stock/serializers.py:1470 msgid "Stock item status code" msgstr "" -#: stock/serializers.py:1369 +#: stock/serializers.py:1498 msgid "Stock transaction notes" msgstr "" +#: stock/status_codes.py:11 +msgid "OK" +msgstr "ΟΚ" + +#: stock/status_codes.py:12 +msgid "Attention needed" +msgstr "Απαιτείται προσοχή" + +#: stock/status_codes.py:13 +msgid "Damaged" +msgstr "Κατεστραμμένο" + +#: stock/status_codes.py:14 +msgid "Destroyed" +msgstr "Καταστράφηκε" + +#: stock/status_codes.py:15 +msgid "Rejected" +msgstr "Απορρίφθηκε" + +#: stock/status_codes.py:19 +msgid "Quarantined" +msgstr "Σε Καραντίνα" + +#: stock/status_codes.py:40 +msgid "Legacy stock tracking entry" +msgstr "Καταχώρηση παλαιού αποθέματος" + +#: stock/status_codes.py:42 templates/js/translated/stock.js:544 +msgid "Stock item created" +msgstr "Το αντικείμενο αποθεμάτων δημιουργήθηκε" + +#: stock/status_codes.py:45 +msgid "Edited stock item" +msgstr "Έγινε συγχώνευση αποθεμάτων" + +#: stock/status_codes.py:46 +msgid "Assigned serial number" +msgstr "Εκχωρημένος σειριακός κωδικός" + +#: stock/status_codes.py:49 +msgid "Stock counted" +msgstr "Απόθεμα που μετρήθηκε" + +#: stock/status_codes.py:50 +msgid "Stock manually added" +msgstr "Προστέθηκε απόθεμα χειροκίνητα" + +#: stock/status_codes.py:51 +msgid "Stock manually removed" +msgstr "Αφαιρέθηκε απόθεμα χειροκίνητα" + +#: stock/status_codes.py:54 +msgid "Location changed" +msgstr "Η τοποθεσία τροποποιήθηκε" + +#: stock/status_codes.py:55 +msgid "Stock updated" +msgstr "Το απόθεμα ενημερώθηκε" + +#: stock/status_codes.py:58 +msgid "Installed into assembly" +msgstr "Εγκαταστάθηκε στη συναρμολόγηση" + +#: stock/status_codes.py:59 +msgid "Removed from assembly" +msgstr "Αφαιρέθηκε από τη συναρμολόγηση" + +#: stock/status_codes.py:61 +msgid "Installed component item" +msgstr "Εγκαταστάθηκε αντικείμενο" + +#: stock/status_codes.py:62 +msgid "Removed component item" +msgstr "Αφαιρέθηκε αντικείμενο" + +#: stock/status_codes.py:65 +msgid "Split from parent item" +msgstr "Έγινε διαχωρισμός από το γονεϊκό αρχείο" + +#: stock/status_codes.py:66 +msgid "Split child item" +msgstr "Διαχωρίστηκε θυγατρικό στοιχείο" + +#: stock/status_codes.py:69 templates/js/translated/stock.js:1858 +msgid "Merged stock items" +msgstr "Έγινε συγχώνευση αποθεμάτων" + +#: stock/status_codes.py:72 +msgid "Converted to variant" +msgstr "Μετατράπηκε σε παραλλαγή" + +#: stock/status_codes.py:75 +msgid "Build order output created" +msgstr "Δημιουργήθηκε η έξοδος παραγγελίας" + +#: stock/status_codes.py:76 +msgid "Build order output completed" +msgstr "Η έξοδος της σειράς κατασκευής ολοκληρώθηκε" + +#: stock/status_codes.py:77 +msgid "Build order output rejected" +msgstr "Η εντολή κατασκευής απορρίφθηκε" + +#: stock/status_codes.py:78 templates/js/translated/stock.js:1764 +msgid "Consumed by build order" +msgstr "Κατανάλωση με εντολή κατασκευής" + +#: stock/status_codes.py:81 +msgid "Shipped against Sales Order" +msgstr "Αποστολή έναντι Εντολής Πώλησης" + +#: stock/status_codes.py:84 +msgid "Received against Purchase Order" +msgstr "Λήφθηκε έναντι Εντολής Αγοράς" + +#: stock/status_codes.py:87 +msgid "Returned against Return Order" +msgstr "Επιστράφηκε έναντι Εντολής Αγοράς" + +#: stock/status_codes.py:90 templates/js/translated/table_filters.js:375 +msgid "Sent to customer" +msgstr "Απεστάλη στον πελάτη" + +#: stock/status_codes.py:91 +msgid "Returned from customer" +msgstr "Επιστράφηκε από πελάτη" + #: stock/templates/stock/item.html:17 msgid "Stock Tracking Information" msgstr "" @@ -9319,7 +9448,7 @@ msgstr "" msgid "Test Report" msgstr "" -#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:286 +#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:284 msgid "Delete Test Data" msgstr "" @@ -9339,11 +9468,11 @@ msgstr "" msgid "Install Stock Item" msgstr "" -#: stock/templates/stock/item.html:274 +#: stock/templates/stock/item.html:272 msgid "Delete all test results for this stock item" msgstr "" -#: stock/templates/stock/item.html:304 templates/js/translated/stock.js:1698 +#: stock/templates/stock/item.html:302 templates/js/translated/stock.js:1701 msgid "Add Test Result" msgstr "" @@ -9366,17 +9495,17 @@ msgid "Stock adjustment actions" msgstr "" #: stock/templates/stock/item_base.html:79 -#: stock/templates/stock/location.html:90 templates/js/translated/stock.js:1821 +#: stock/templates/stock/location.html:90 templates/js/translated/stock.js:1824 msgid "Count stock" msgstr "" #: stock/templates/stock/item_base.html:81 -#: templates/js/translated/stock.js:1803 +#: templates/js/translated/stock.js:1806 msgid "Add stock" msgstr "" #: stock/templates/stock/item_base.html:82 -#: templates/js/translated/stock.js:1812 +#: templates/js/translated/stock.js:1815 msgid "Remove stock" msgstr "" @@ -9385,12 +9514,12 @@ msgid "Serialize stock" msgstr "" #: stock/templates/stock/item_base.html:88 -#: stock/templates/stock/location.html:96 templates/js/translated/stock.js:1830 +#: stock/templates/stock/location.html:96 templates/js/translated/stock.js:1833 msgid "Transfer stock" msgstr "" #: stock/templates/stock/item_base.html:91 -#: templates/js/translated/stock.js:1884 +#: templates/js/translated/stock.js:1887 msgid "Assign to customer" msgstr "" @@ -9431,7 +9560,7 @@ 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 +#: templates/js/translated/build.js:2123 templates/navbar.html:38 msgid "Build" msgstr "Κατασκευή" @@ -9497,7 +9626,7 @@ msgid "Available Quantity" msgstr "" #: stock/templates/stock/item_base.html:398 -#: templates/js/translated/build.js:2378 +#: templates/js/translated/build.js:2380 msgid "No location set" msgstr "" @@ -9528,40 +9657,40 @@ msgstr "" msgid "No stocktake performed" msgstr "" -#: stock/templates/stock/item_base.html:507 -#: templates/js/translated/stock.js:1951 +#: stock/templates/stock/item_base.html:504 +#: templates/js/translated/stock.js:1952 msgid "stock item" msgstr "" -#: stock/templates/stock/item_base.html:532 +#: stock/templates/stock/item_base.html:527 msgid "Edit Stock Status" msgstr "" -#: stock/templates/stock/item_base.html:541 +#: stock/templates/stock/item_base.html:536 msgid "Stock Item QR Code" msgstr "" -#: stock/templates/stock/item_base.html:552 +#: stock/templates/stock/item_base.html:547 msgid "Link Barcode to Stock Item" msgstr "" -#: stock/templates/stock/item_base.html:616 +#: stock/templates/stock/item_base.html:611 msgid "Select one of the part variants listed below." msgstr "" -#: stock/templates/stock/item_base.html:619 +#: stock/templates/stock/item_base.html:614 msgid "Warning" msgstr "" -#: stock/templates/stock/item_base.html:620 +#: stock/templates/stock/item_base.html:615 msgid "This action cannot be easily undone" msgstr "" -#: stock/templates/stock/item_base.html:628 +#: stock/templates/stock/item_base.html:623 msgid "Convert Stock Item" msgstr "" -#: stock/templates/stock/item_base.html:662 +#: stock/templates/stock/item_base.html:657 msgid "Return to Stock" msgstr "" @@ -9625,28 +9754,32 @@ msgstr "" 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 +#: stock/templates/stock/location.html:176 +msgid "Location Type" +msgstr "" + +#: stock/templates/stock/location.html:224 msgid "Create new stock location" msgstr "" -#: stock/templates/stock/location.html:218 +#: stock/templates/stock/location.html:225 msgid "New Location" msgstr "" -#: stock/templates/stock/location.html:287 +#: stock/templates/stock/location.html:295 #: templates/js/translated/stock.js:2572 msgid "stock location" msgstr "" -#: stock/templates/stock/location.html:315 +#: stock/templates/stock/location.html:317 msgid "Scanned stock container into this location" msgstr "" -#: stock/templates/stock/location.html:388 +#: stock/templates/stock/location.html:390 msgid "Stock Location QR Code" msgstr "" -#: stock/templates/stock/location.html:399 +#: stock/templates/stock/location.html:401 msgid "Link Barcode to Stock Location" msgstr "" @@ -9872,12 +10005,12 @@ msgstr "" 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/InvenTree/settings/login.html:27 templates/account/signup.html:5 #: templates/socialaccount/signup.html:5 msgid "Signup" msgstr "" -#: templates/InvenTree/settings/login.html:34 +#: templates/InvenTree/settings/login.html:36 msgid "Single Sign On" msgstr "" @@ -9916,11 +10049,11 @@ msgstr "" msgid "Part Settings" msgstr "" -#: templates/InvenTree/settings/part.html:42 +#: templates/InvenTree/settings/part.html:43 msgid "Part Import" msgstr "" -#: templates/InvenTree/settings/part.html:46 +#: templates/InvenTree/settings/part.html:47 msgid "Import Part" msgstr "" @@ -9954,36 +10087,36 @@ msgstr "" 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/plugin.html:38 #: templates/InvenTree/settings/sidebar.html:66 msgid "Plugins" msgstr "" -#: templates/InvenTree/settings/plugin.html:42 -#: templates/InvenTree/settings/plugin.html:43 +#: templates/InvenTree/settings/plugin.html:44 +#: templates/InvenTree/settings/plugin.html:45 #: templates/js/translated/plugin.js:151 msgid "Install Plugin" msgstr "" -#: templates/InvenTree/settings/plugin.html:45 -#: templates/InvenTree/settings/plugin.html:46 +#: templates/InvenTree/settings/plugin.html:47 +#: templates/InvenTree/settings/plugin.html:48 #: templates/js/translated/plugin.js:224 msgid "Reload Plugins" msgstr "" -#: templates/InvenTree/settings/plugin.html:56 +#: templates/InvenTree/settings/plugin.html:58 msgid "External plugins are not enabled for this InvenTree installation" msgstr "" -#: templates/InvenTree/settings/plugin.html:71 +#: templates/InvenTree/settings/plugin.html:73 msgid "Plugin Error Stack" msgstr "" -#: templates/InvenTree/settings/plugin.html:80 +#: templates/InvenTree/settings/plugin.html:82 msgid "Stage" msgstr "" -#: templates/InvenTree/settings/plugin.html:82 +#: templates/InvenTree/settings/plugin.html:84 #: templates/js/translated/notification.js:76 msgid "Message" msgstr "" @@ -10141,7 +10274,7 @@ 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:424 +#: templates/js/translated/stock.js:245 users/models.py:411 msgid "Delete" msgstr "" @@ -10162,7 +10295,7 @@ msgid "No project codes found" msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:158 -#: templates/js/translated/build.js:2226 +#: templates/js/translated/build.js:2228 msgid "group" msgstr "" @@ -10228,7 +10361,7 @@ msgid "Delete Location Type" msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:500 -#: templates/InvenTree/settings/stock.html:37 +#: templates/InvenTree/settings/stock.html:38 msgid "New Location Type" msgstr "" @@ -10250,7 +10383,7 @@ msgid "Home Page" msgstr "" #: templates/InvenTree/settings/sidebar.html:15 -#: templates/js/translated/forms.js:2159 templates/js/translated/tables.js:543 +#: templates/js/translated/forms.js:2167 templates/js/translated/tables.js:543 #: templates/navbar.html:107 templates/search.html:8 #: templates/search_form.html:6 templates/search_form.html:7 msgid "Search" @@ -10285,7 +10418,7 @@ msgstr "" msgid "Stock Settings" msgstr "" -#: templates/InvenTree/settings/stock.html:33 +#: templates/InvenTree/settings/stock.html:34 msgid "Stock Location Types" msgstr "" @@ -10384,49 +10517,49 @@ msgstr "" msgid "Remove multifactor" msgstr "" -#: templates/InvenTree/settings/user.html:168 +#: templates/InvenTree/settings/user.html:171 msgid "Active Sessions" msgstr "" -#: templates/InvenTree/settings/user.html:174 +#: templates/InvenTree/settings/user.html:177 msgid "Log out active sessions (except this one)" msgstr "" -#: templates/InvenTree/settings/user.html:175 +#: templates/InvenTree/settings/user.html:178 msgid "Log Out Active Sessions" msgstr "" -#: templates/InvenTree/settings/user.html:184 +#: templates/InvenTree/settings/user.html:187 msgid "unknown on unknown" msgstr "" -#: templates/InvenTree/settings/user.html:185 +#: templates/InvenTree/settings/user.html:188 msgid "unknown" msgstr "" -#: templates/InvenTree/settings/user.html:189 +#: templates/InvenTree/settings/user.html:192 msgid "IP Address" msgstr "" -#: templates/InvenTree/settings/user.html:190 +#: templates/InvenTree/settings/user.html:193 msgid "Device" msgstr "" -#: templates/InvenTree/settings/user.html:191 +#: templates/InvenTree/settings/user.html:194 msgid "Last Activity" msgstr "" -#: templates/InvenTree/settings/user.html:204 +#: templates/InvenTree/settings/user.html:207 #, python-format msgid "%(time)s ago (this session)" msgstr "" -#: templates/InvenTree/settings/user.html:206 +#: templates/InvenTree/settings/user.html:209 #, python-format msgid "%(time)s ago" msgstr "" -#: templates/InvenTree/settings/user.html:218 +#: templates/InvenTree/settings/user.html:223 msgid "Do you really want to remove the selected email address?" msgstr "" @@ -10607,26 +10740,26 @@ msgstr "" 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 +#: templates/account/login.html:6 templates/account/login.html:19 +#: templates/account/login.html:40 templates/socialaccount/login.html:5 msgid "Sign In" msgstr "" -#: templates/account/login.html:21 +#: templates/account/login.html:23 msgid "Not a member?" msgstr "" -#: templates/account/login.html:23 templates/account/signup.html:11 +#: templates/account/login.html:25 templates/account/signup.html:11 #: templates/account/signup.html:22 templates/socialaccount/signup.html:8 #: templates/socialaccount/signup.html:23 msgid "Sign Up" msgstr "" -#: templates/account/login.html:45 +#: templates/account/login.html:47 msgid "Forgot Password?" msgstr "" -#: templates/account/login.html:53 +#: templates/account/login.html:55 msgid "or log in with" msgstr "" @@ -10827,7 +10960,7 @@ 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 +#: templates/js/translated/bom.js:1674 templates/js/translated/build.js:2556 msgid "Required Quantity" msgstr "" @@ -10841,7 +10974,7 @@ msgid "Click on the following link to view this part" msgstr "" #: templates/email/low_stock_notification.html:18 -#: templates/js/translated/part.js:3218 +#: templates/js/translated/part.js:3217 msgid "Minimum Quantity" msgstr "" @@ -11006,7 +11139,7 @@ msgstr "" msgid "Unlink" msgstr "" -#: templates/js/translated/barcode.js:567 templates/js/translated/stock.js:1155 +#: templates/js/translated/barcode.js:567 templates/js/translated/stock.js:1158 msgid "Remove stock item" msgstr "" @@ -11196,7 +11329,7 @@ msgstr "" msgid "Substitutes Available" msgstr "" -#: templates/js/translated/bom.js:950 templates/js/translated/build.js:2501 +#: templates/js/translated/bom.js:950 templates/js/translated/build.js:2500 msgid "Variant stock allowed" msgstr "" @@ -11216,30 +11349,30 @@ msgstr "" msgid "No pricing available" msgstr "" -#: templates/js/translated/bom.js:1184 templates/js/translated/build.js:2622 +#: templates/js/translated/bom.js:1184 templates/js/translated/build.js:2621 msgid "External stock" msgstr "" -#: templates/js/translated/bom.js:1188 templates/js/translated/build.js:2596 -#: templates/js/translated/sales_order.js:1910 +#: templates/js/translated/bom.js:1188 templates/js/translated/build.js:2595 +#: templates/js/translated/sales_order.js:1946 msgid "No Stock Available" msgstr "" -#: templates/js/translated/bom.js:1193 templates/js/translated/build.js:2600 +#: templates/js/translated/bom.js:1193 templates/js/translated/build.js:2599 msgid "Includes variant and substitute stock" msgstr "" -#: templates/js/translated/bom.js:1195 templates/js/translated/build.js:2602 +#: templates/js/translated/bom.js:1195 templates/js/translated/build.js:2601 #: templates/js/translated/part.js:1256 -#: templates/js/translated/sales_order.js:1907 +#: templates/js/translated/sales_order.js:1943 msgid "Includes variant stock" msgstr "" -#: templates/js/translated/bom.js:1197 templates/js/translated/build.js:2604 +#: templates/js/translated/bom.js:1197 templates/js/translated/build.js:2603 msgid "Includes substitute stock" msgstr "" -#: templates/js/translated/bom.js:1225 templates/js/translated/build.js:2587 +#: templates/js/translated/bom.js:1225 templates/js/translated/build.js:2586 msgid "Consumable item" msgstr "" @@ -11271,7 +11404,7 @@ msgstr "" msgid "No BOM items found" msgstr "" -#: templates/js/translated/bom.js:1657 templates/js/translated/build.js:2486 +#: templates/js/translated/bom.js:1657 templates/js/translated/build.js:2485 msgid "Required Part" msgstr "" @@ -11440,207 +11573,207 @@ msgstr "" msgid "No build order allocations found" msgstr "" -#: templates/js/translated/build.js:989 templates/js/translated/build.js:2342 +#: templates/js/translated/build.js:991 templates/js/translated/build.js:2344 msgid "Allocated Quantity" msgstr "" -#: templates/js/translated/build.js:1003 +#: templates/js/translated/build.js:1005 msgid "Location not specified" msgstr "" -#: templates/js/translated/build.js:1025 +#: templates/js/translated/build.js:1027 msgid "Complete outputs" msgstr "" -#: templates/js/translated/build.js:1043 +#: templates/js/translated/build.js:1045 msgid "Scrap outputs" msgstr "" -#: templates/js/translated/build.js:1061 +#: templates/js/translated/build.js:1063 msgid "Delete outputs" msgstr "" -#: templates/js/translated/build.js:1115 +#: templates/js/translated/build.js:1116 msgid "build output" msgstr "" -#: templates/js/translated/build.js:1116 +#: templates/js/translated/build.js:1117 msgid "build outputs" msgstr "" -#: templates/js/translated/build.js:1120 +#: templates/js/translated/build.js:1121 msgid "Build output actions" msgstr "" -#: templates/js/translated/build.js:1294 +#: templates/js/translated/build.js:1297 msgid "No active build outputs found" msgstr "" -#: templates/js/translated/build.js:1387 +#: templates/js/translated/build.js:1390 msgid "Allocated Lines" msgstr "" -#: templates/js/translated/build.js:1401 +#: templates/js/translated/build.js:1404 msgid "Required Tests" msgstr "" -#: templates/js/translated/build.js:1573 +#: templates/js/translated/build.js:1576 #: templates/js/translated/purchase_order.js:611 -#: templates/js/translated/sales_order.js:1171 +#: templates/js/translated/sales_order.js:1207 msgid "Select Parts" msgstr "" -#: templates/js/translated/build.js:1574 -#: templates/js/translated/sales_order.js:1172 +#: templates/js/translated/build.js:1577 +#: templates/js/translated/sales_order.js:1208 msgid "You must select at least one part to allocate" msgstr "" -#: templates/js/translated/build.js:1637 -#: templates/js/translated/sales_order.js:1121 +#: templates/js/translated/build.js:1640 +#: templates/js/translated/sales_order.js:1157 msgid "Specify stock allocation quantity" msgstr "" -#: templates/js/translated/build.js:1714 +#: templates/js/translated/build.js:1717 msgid "All Parts Allocated" msgstr "" -#: templates/js/translated/build.js:1715 +#: templates/js/translated/build.js:1718 msgid "All selected parts have been fully allocated" msgstr "" -#: templates/js/translated/build.js:1729 -#: templates/js/translated/sales_order.js:1186 +#: templates/js/translated/build.js:1732 +#: templates/js/translated/sales_order.js:1222 msgid "Select source location (leave blank to take from all locations)" msgstr "" -#: templates/js/translated/build.js:1757 +#: templates/js/translated/build.js:1760 msgid "Allocate Stock Items to Build Order" msgstr "" -#: templates/js/translated/build.js:1768 -#: templates/js/translated/sales_order.js:1283 +#: templates/js/translated/build.js:1771 +#: templates/js/translated/sales_order.js:1319 msgid "No matching stock locations" msgstr "" -#: templates/js/translated/build.js:1841 -#: templates/js/translated/sales_order.js:1362 +#: templates/js/translated/build.js:1844 +#: templates/js/translated/sales_order.js:1398 msgid "No matching stock items" msgstr "" -#: templates/js/translated/build.js:1938 +#: templates/js/translated/build.js:1941 msgid "Automatic Stock Allocation" msgstr "" -#: templates/js/translated/build.js:1939 +#: templates/js/translated/build.js:1942 msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines" msgstr "" -#: templates/js/translated/build.js:1941 +#: templates/js/translated/build.js:1944 msgid "If a location is specified, stock will only be allocated from that location" msgstr "" -#: templates/js/translated/build.js:1942 +#: templates/js/translated/build.js:1945 msgid "If stock is considered interchangeable, it will be allocated from the first location it is found" msgstr "" -#: templates/js/translated/build.js:1943 +#: templates/js/translated/build.js:1946 msgid "If substitute stock is allowed, it will be used where stock of the primary part cannot be found" msgstr "" -#: templates/js/translated/build.js:1974 +#: templates/js/translated/build.js:1977 msgid "Allocate Stock Items" msgstr "" -#: templates/js/translated/build.js:2080 +#: templates/js/translated/build.js:2082 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 +#: templates/js/translated/build.js:2117 templates/js/translated/build.js:2479 +#: templates/js/translated/forms.js:2163 templates/js/translated/forms.js:2179 +#: templates/js/translated/part.js:2315 templates/js/translated/part.js:2741 +#: templates/js/translated/stock.js:1983 templates/js/translated/stock.js:2710 msgid "Select" msgstr "" -#: templates/js/translated/build.js:2129 +#: templates/js/translated/build.js:2131 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 +#: templates/js/translated/build.js:2213 templates/js/translated/stock.js:3042 msgid "No user information" msgstr "" -#: templates/js/translated/build.js:2387 -#: templates/js/translated/sales_order.js:1646 +#: templates/js/translated/build.js:2389 +#: templates/js/translated/sales_order.js:1682 msgid "Edit stock allocation" msgstr "" -#: templates/js/translated/build.js:2388 -#: templates/js/translated/sales_order.js:1647 +#: templates/js/translated/build.js:2390 +#: templates/js/translated/sales_order.js:1683 msgid "Delete stock allocation" msgstr "" -#: templates/js/translated/build.js:2403 +#: templates/js/translated/build.js:2405 msgid "Edit Allocation" msgstr "" -#: templates/js/translated/build.js:2415 +#: templates/js/translated/build.js:2417 msgid "Remove Allocation" msgstr "" -#: templates/js/translated/build.js:2456 +#: templates/js/translated/build.js:2455 msgid "build line" msgstr "" -#: templates/js/translated/build.js:2457 +#: templates/js/translated/build.js:2456 msgid "build lines" msgstr "" -#: templates/js/translated/build.js:2475 +#: templates/js/translated/build.js:2474 msgid "No build lines found" msgstr "" -#: templates/js/translated/build.js:2505 templates/js/translated/part.js:790 +#: templates/js/translated/build.js:2504 templates/js/translated/part.js:790 #: templates/js/translated/part.js:1202 msgid "Trackable part" msgstr "" -#: templates/js/translated/build.js:2540 +#: templates/js/translated/build.js:2539 msgid "Unit Quantity" msgstr "" -#: templates/js/translated/build.js:2592 -#: templates/js/translated/sales_order.js:1915 +#: templates/js/translated/build.js:2591 +#: templates/js/translated/sales_order.js:1951 msgid "Sufficient stock available" msgstr "" -#: templates/js/translated/build.js:2647 +#: templates/js/translated/build.js:2646 msgid "Consumable Item" msgstr "" -#: templates/js/translated/build.js:2652 +#: templates/js/translated/build.js:2653 msgid "Tracked item" msgstr "" -#: templates/js/translated/build.js:2659 -#: templates/js/translated/sales_order.js:2016 +#: templates/js/translated/build.js:2654 +msgid "Allocate tracked items against individual build outputs" +msgstr "" + +#: templates/js/translated/build.js:2662 +#: templates/js/translated/sales_order.js:2052 msgid "Build stock" msgstr "" -#: templates/js/translated/build.js:2664 templates/js/translated/stock.js:1865 +#: templates/js/translated/build.js:2667 templates/js/translated/stock.js:1868 msgid "Order stock" msgstr "" -#: templates/js/translated/build.js:2668 -#: templates/js/translated/sales_order.js:2010 +#: templates/js/translated/build.js:2671 +#: templates/js/translated/sales_order.js:2046 msgid "Allocate stock" msgstr "" -#: templates/js/translated/build.js:2672 +#: templates/js/translated/build.js:2675 msgid "Remove stock allocation" msgstr "" @@ -11886,12 +12019,12 @@ msgid "Delete price break" msgstr "" #: templates/js/translated/filters.js:186 -#: templates/js/translated/filters.js:672 +#: templates/js/translated/filters.js:667 msgid "true" msgstr "" #: templates/js/translated/filters.js:190 -#: templates/js/translated/filters.js:673 +#: templates/js/translated/filters.js:668 msgid "false" msgstr "" @@ -11923,7 +12056,7 @@ msgstr "" msgid "Clear all filters" msgstr "" -#: templates/js/translated/filters.js:582 +#: templates/js/translated/filters.js:577 msgid "Create filter" msgstr "" @@ -11956,32 +12089,32 @@ msgstr "" msgid "Enter a valid number" msgstr "" -#: templates/js/translated/forms.js:1473 templates/modals.html:19 +#: templates/js/translated/forms.js:1477 templates/modals.html:19 #: templates/modals.html:43 msgid "Form errors exist" msgstr "" -#: templates/js/translated/forms.js:1971 +#: templates/js/translated/forms.js:1975 msgid "No results found" msgstr "" -#: templates/js/translated/forms.js:2275 templates/js/translated/search.js:239 +#: templates/js/translated/forms.js:2285 templates/js/translated/search.js:239 msgid "Searching" msgstr "" -#: templates/js/translated/forms.js:2489 +#: templates/js/translated/forms.js:2499 msgid "Clear input" msgstr "" -#: templates/js/translated/forms.js:3091 +#: templates/js/translated/forms.js:3101 msgid "File Column" msgstr "" -#: templates/js/translated/forms.js:3091 +#: templates/js/translated/forms.js:3101 msgid "Field Name" msgstr "" -#: templates/js/translated/forms.js:3103 +#: templates/js/translated/forms.js:3113 msgid "Select Columns" msgstr "" @@ -12005,51 +12138,15 @@ msgstr "" msgid "No parts required for builds" msgstr "" -#: templates/js/translated/label.js:53 templates/js/translated/report.js:123 +#: templates/js/translated/label.js:55 templates/js/translated/report.js:38 msgid "Select Items" msgstr "" -#: templates/js/translated/label.js:54 +#: templates/js/translated/label.js:56 templates/js/translated/report.js:39 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 +#: templates/js/translated/label.js:150 msgid "Labels sent to printer" msgstr "" @@ -12167,7 +12264,7 @@ msgid "Delete Line" msgstr "" #: templates/js/translated/order.js:281 -#: templates/js/translated/purchase_order.js:1991 +#: templates/js/translated/purchase_order.js:1990 msgid "No line items found" msgstr "" @@ -12405,19 +12502,19 @@ msgid "Delete Part Parameter Template" msgstr "" #: templates/js/translated/part.js:1716 -#: templates/js/translated/purchase_order.js:1655 +#: templates/js/translated/purchase_order.js:1654 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 +#: templates/js/translated/purchase_order.js:2153 +#: templates/js/translated/return_order.js:755 +#: templates/js/translated/sales_order.js:1911 msgid "This line item is overdue" msgstr "" #: templates/js/translated/part.js:1906 -#: templates/js/translated/purchase_order.js:2221 +#: templates/js/translated/purchase_order.js:2220 msgid "Receive line item" msgstr "" @@ -12429,7 +12526,7 @@ msgstr "" msgid "Delete Part Relationship" msgstr "" -#: templates/js/translated/part.js:2079 templates/js/translated/part.js:2506 +#: templates/js/translated/part.js:2079 templates/js/translated/part.js:2505 msgid "No parts found" msgstr "" @@ -12445,101 +12542,101 @@ msgstr "" msgid "Set category" msgstr "" -#: templates/js/translated/part.js:2287 +#: templates/js/translated/part.js:2286 msgid "part" msgstr "" -#: templates/js/translated/part.js:2288 +#: templates/js/translated/part.js:2287 msgid "parts" msgstr "" -#: templates/js/translated/part.js:2384 +#: templates/js/translated/part.js:2383 msgid "No category" msgstr "" -#: templates/js/translated/part.js:2531 templates/js/translated/part.js:2661 +#: templates/js/translated/part.js:2530 templates/js/translated/part.js:2660 #: templates/js/translated/stock.js:2669 msgid "Display as list" msgstr "" -#: templates/js/translated/part.js:2547 +#: templates/js/translated/part.js:2546 msgid "Display as grid" msgstr "" -#: templates/js/translated/part.js:2645 +#: templates/js/translated/part.js:2644 msgid "No subcategories found" msgstr "" -#: templates/js/translated/part.js:2681 templates/js/translated/stock.js:2689 +#: templates/js/translated/part.js:2680 templates/js/translated/stock.js:2689 msgid "Display as tree" msgstr "" -#: templates/js/translated/part.js:2761 +#: templates/js/translated/part.js:2760 msgid "Load Subcategories" msgstr "" -#: templates/js/translated/part.js:2777 +#: templates/js/translated/part.js:2776 msgid "Subscribed category" msgstr "" -#: templates/js/translated/part.js:2864 +#: templates/js/translated/part.js:2863 msgid "No test templates matching query" msgstr "" -#: templates/js/translated/part.js:2886 templates/js/translated/search.js:342 +#: templates/js/translated/part.js:2885 templates/js/translated/search.js:342 msgid "results" msgstr "" -#: templates/js/translated/part.js:2936 templates/js/translated/stock.js:1453 +#: templates/js/translated/part.js:2935 templates/js/translated/stock.js:1456 msgid "Edit test result" msgstr "" -#: templates/js/translated/part.js:2937 templates/js/translated/stock.js:1454 -#: templates/js/translated/stock.js:1728 +#: templates/js/translated/part.js:2936 templates/js/translated/stock.js:1457 +#: templates/js/translated/stock.js:1731 msgid "Delete test result" msgstr "" -#: templates/js/translated/part.js:2941 +#: templates/js/translated/part.js:2940 msgid "This test is defined for a parent part" msgstr "" -#: templates/js/translated/part.js:2957 +#: templates/js/translated/part.js:2956 msgid "Edit Test Result Template" msgstr "" -#: templates/js/translated/part.js:2971 +#: templates/js/translated/part.js:2970 msgid "Delete Test Result Template" msgstr "" -#: templates/js/translated/part.js:3050 templates/js/translated/part.js:3051 +#: templates/js/translated/part.js:3049 templates/js/translated/part.js:3050 msgid "No date specified" msgstr "" -#: templates/js/translated/part.js:3053 +#: templates/js/translated/part.js:3052 msgid "Specified date is in the past" msgstr "" -#: templates/js/translated/part.js:3059 +#: templates/js/translated/part.js:3058 msgid "Speculative" msgstr "" -#: templates/js/translated/part.js:3109 +#: templates/js/translated/part.js:3108 msgid "No scheduling information available for this part" msgstr "" -#: templates/js/translated/part.js:3115 +#: templates/js/translated/part.js:3114 msgid "Error fetching scheduling information for this part" msgstr "" -#: templates/js/translated/part.js:3211 +#: templates/js/translated/part.js:3210 msgid "Scheduled Stock Quantities" msgstr "" -#: templates/js/translated/part.js:3227 +#: templates/js/translated/part.js:3226 msgid "Maximum Quantity" msgstr "" -#: templates/js/translated/part.js:3272 +#: templates/js/translated/part.js:3271 msgid "Minimum Stock Level" msgstr "" @@ -12665,7 +12762,7 @@ msgstr "" #: templates/js/translated/purchase_order.js:448 #: templates/js/translated/return_order.js:210 -#: templates/js/translated/sales_order.js:500 +#: templates/js/translated/sales_order.js:552 msgid "Mark this order as complete?" msgstr "" @@ -12678,7 +12775,6 @@ 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 "" @@ -12736,12 +12832,12 @@ msgid "No matching purchase orders" msgstr "" #: templates/js/translated/purchase_order.js:1073 -#: templates/js/translated/return_order.js:491 +#: templates/js/translated/return_order.js:490 msgid "Select Line Items" msgstr "" #: templates/js/translated/purchase_order.js:1074 -#: templates/js/translated/return_order.js:492 +#: templates/js/translated/return_order.js:491 msgid "At least one line item must be selected" msgstr "" @@ -12790,7 +12886,7 @@ msgid "Quantity to Receive" msgstr "" #: templates/js/translated/purchase_order.js:1333 -#: templates/js/translated/return_order.js:561 +#: templates/js/translated/return_order.js:560 msgid "Confirm receipt of items" msgstr "" @@ -12810,81 +12906,66 @@ msgstr "" 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 +#: templates/js/translated/purchase_order.js:1681 +#: templates/js/translated/return_order.js:285 +#: templates/js/translated/sales_order.js:810 +#: templates/js/translated/sales_order.js:1034 msgid "Order is overdue" msgstr "" -#: templates/js/translated/purchase_order.js: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 +#: templates/js/translated/purchase_order.js:1843 msgid "All selected Line items will be deleted" msgstr "" -#: templates/js/translated/purchase_order.js:1862 +#: templates/js/translated/purchase_order.js:1861 msgid "Delete selected Line items?" msgstr "" -#: templates/js/translated/purchase_order.js:1917 -#: templates/js/translated/sales_order.js:2070 +#: templates/js/translated/purchase_order.js:1916 +#: templates/js/translated/sales_order.js:2106 msgid "Duplicate Line Item" msgstr "" -#: templates/js/translated/purchase_order.js:1932 -#: templates/js/translated/return_order.js:476 -#: templates/js/translated/return_order.js:669 -#: templates/js/translated/sales_order.js:2083 +#: templates/js/translated/purchase_order.js:1931 +#: templates/js/translated/return_order.js:475 +#: templates/js/translated/return_order.js:668 +#: templates/js/translated/sales_order.js:2119 msgid "Edit Line Item" msgstr "" -#: templates/js/translated/purchase_order.js:1943 -#: templates/js/translated/return_order.js:682 -#: templates/js/translated/sales_order.js:2094 +#: templates/js/translated/purchase_order.js:1942 +#: templates/js/translated/return_order.js:681 +#: templates/js/translated/sales_order.js:2130 msgid "Delete Line Item" msgstr "" -#: templates/js/translated/purchase_order.js:2225 -#: templates/js/translated/sales_order.js:2024 +#: templates/js/translated/purchase_order.js:2224 +#: templates/js/translated/sales_order.js:2060 msgid "Duplicate line item" msgstr "" -#: templates/js/translated/purchase_order.js:2226 -#: templates/js/translated/return_order.js:801 -#: templates/js/translated/sales_order.js:2025 +#: templates/js/translated/purchase_order.js:2225 +#: templates/js/translated/return_order.js:800 +#: templates/js/translated/sales_order.js:2061 msgid "Edit line item" msgstr "" -#: templates/js/translated/purchase_order.js:2227 -#: templates/js/translated/return_order.js:805 -#: templates/js/translated/sales_order.js:2031 +#: templates/js/translated/purchase_order.js:2226 +#: templates/js/translated/return_order.js:804 +#: templates/js/translated/sales_order.js:2067 msgid "Delete line item" msgstr "" -#: templates/js/translated/report.js:63 -msgid "items selected" +#: templates/js/translated/report.js:49 +msgid "Print Report" msgstr "" -#: templates/js/translated/report.js:71 -msgid "Select Report Template" +#: templates/js/translated/report.js:68 +msgid "Report print successful" 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" +#: templates/js/translated/report.js:73 +msgid "Report printing failed" msgstr "" #: templates/js/translated/return_order.js:60 @@ -12916,25 +12997,25 @@ msgstr "" msgid "Complete Return Order" msgstr "" -#: templates/js/translated/return_order.js:266 +#: templates/js/translated/return_order.js:265 msgid "No return orders found" msgstr "" -#: templates/js/translated/return_order.js:300 -#: templates/js/translated/sales_order.js:788 +#: templates/js/translated/return_order.js:299 +#: templates/js/translated/sales_order.js:824 msgid "Invalid Customer" msgstr "" -#: templates/js/translated/return_order.js:562 +#: templates/js/translated/return_order.js:561 msgid "Receive Return Order Items" msgstr "" -#: templates/js/translated/return_order.js:693 -#: templates/js/translated/sales_order.js:2231 +#: templates/js/translated/return_order.js:692 +#: templates/js/translated/sales_order.js:2267 msgid "No matching line items" msgstr "" -#: templates/js/translated/return_order.js:798 +#: templates/js/translated/return_order.js:797 msgid "Mark item as received" msgstr "" @@ -12978,140 +13059,156 @@ msgstr "" msgid "Skip" msgstr "" +#: templates/js/translated/sales_order.js:484 +msgid "Ship Sales Order" +msgstr "" + +#: templates/js/translated/sales_order.js:500 +msgid "Ship this order?" +msgstr "" + +#: templates/js/translated/sales_order.js:506 +msgid "Order cannot be shipped as there are incomplete shipments" +msgstr "" + #: templates/js/translated/sales_order.js:513 msgid "This order has line items which have not been completed." msgstr "" -#: templates/js/translated/sales_order.js:535 +#: templates/js/translated/sales_order.js:514 +msgid "Shipping this order means that the order and line items will no longer be editable." +msgstr "" + +#: templates/js/translated/sales_order.js:572 msgid "Issue this Sales Order?" msgstr "" -#: templates/js/translated/sales_order.js:540 +#: templates/js/translated/sales_order.js:577 msgid "Issue Sales Order" msgstr "" -#: templates/js/translated/sales_order.js:559 +#: templates/js/translated/sales_order.js:596 msgid "Cancel Sales Order" msgstr "" -#: templates/js/translated/sales_order.js:564 +#: templates/js/translated/sales_order.js:601 msgid "Cancelling this order means that the order will no longer be editable." msgstr "" -#: templates/js/translated/sales_order.js:618 +#: templates/js/translated/sales_order.js:655 msgid "Create New Shipment" msgstr "" -#: templates/js/translated/sales_order.js:728 +#: templates/js/translated/sales_order.js:764 msgid "No sales orders found" msgstr "" -#: templates/js/translated/sales_order.js:908 +#: templates/js/translated/sales_order.js:944 msgid "Edit shipment" msgstr "" -#: templates/js/translated/sales_order.js:911 +#: templates/js/translated/sales_order.js:947 msgid "Complete shipment" msgstr "" -#: templates/js/translated/sales_order.js:916 +#: templates/js/translated/sales_order.js:952 msgid "Delete shipment" msgstr "" -#: templates/js/translated/sales_order.js:933 +#: templates/js/translated/sales_order.js:969 msgid "Edit Shipment" msgstr "" -#: templates/js/translated/sales_order.js:948 +#: templates/js/translated/sales_order.js:984 msgid "Delete Shipment" msgstr "" -#: templates/js/translated/sales_order.js:981 +#: templates/js/translated/sales_order.js:1017 msgid "No matching shipments found" msgstr "" -#: templates/js/translated/sales_order.js:1006 +#: templates/js/translated/sales_order.js:1042 msgid "Shipment Reference" msgstr "" -#: templates/js/translated/sales_order.js:1030 -#: templates/js/translated/sales_order.js:1529 +#: templates/js/translated/sales_order.js:1066 +#: templates/js/translated/sales_order.js:1565 msgid "Not shipped" msgstr "" -#: templates/js/translated/sales_order.js:1048 +#: templates/js/translated/sales_order.js:1084 msgid "Tracking" msgstr "" -#: templates/js/translated/sales_order.js:1052 +#: templates/js/translated/sales_order.js:1088 msgid "Invoice" msgstr "" -#: templates/js/translated/sales_order.js:1219 +#: templates/js/translated/sales_order.js:1255 msgid "Add Shipment" msgstr "" -#: templates/js/translated/sales_order.js:1270 +#: templates/js/translated/sales_order.js:1306 msgid "Confirm stock allocation" msgstr "" -#: templates/js/translated/sales_order.js:1271 +#: templates/js/translated/sales_order.js:1307 msgid "Allocate Stock Items to Sales Order" msgstr "" -#: templates/js/translated/sales_order.js:1477 +#: templates/js/translated/sales_order.js:1513 msgid "No sales order allocations found" msgstr "" -#: templates/js/translated/sales_order.js:1569 +#: templates/js/translated/sales_order.js:1605 msgid "Edit Stock Allocation" msgstr "" -#: templates/js/translated/sales_order.js:1583 +#: templates/js/translated/sales_order.js:1619 msgid "Confirm Delete Operation" msgstr "" -#: templates/js/translated/sales_order.js:1584 +#: templates/js/translated/sales_order.js:1620 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 +#: templates/js/translated/sales_order.js:1659 +#: templates/js/translated/sales_order.js:1746 +#: templates/js/translated/stock.js:1776 msgid "Shipped to customer" msgstr "" -#: templates/js/translated/sales_order.js:1631 -#: templates/js/translated/sales_order.js:1719 +#: templates/js/translated/sales_order.js:1667 +#: templates/js/translated/sales_order.js:1755 msgid "Stock location not specified" msgstr "" -#: templates/js/translated/sales_order.js:2008 +#: templates/js/translated/sales_order.js:2044 msgid "Allocate serial numbers" msgstr "" -#: templates/js/translated/sales_order.js:2012 +#: templates/js/translated/sales_order.js:2048 msgid "Purchase stock" msgstr "" -#: templates/js/translated/sales_order.js:2021 -#: templates/js/translated/sales_order.js:2209 +#: templates/js/translated/sales_order.js:2057 +#: templates/js/translated/sales_order.js:2245 msgid "Calculate price" msgstr "" -#: templates/js/translated/sales_order.js:2035 +#: templates/js/translated/sales_order.js:2071 msgid "Cannot be deleted as items have been shipped" msgstr "" -#: templates/js/translated/sales_order.js:2038 +#: templates/js/translated/sales_order.js:2074 msgid "Cannot be deleted as items have been allocated" msgstr "" -#: templates/js/translated/sales_order.js:2109 +#: templates/js/translated/sales_order.js:2145 msgid "Allocate Serial Numbers" msgstr "" -#: templates/js/translated/sales_order.js:2217 +#: templates/js/translated/sales_order.js:2253 msgid "Update Unit Price" msgstr "" @@ -13319,7 +13416,7 @@ msgstr "" msgid "Add Stock" msgstr "" -#: templates/js/translated/stock.js:1042 users/models.py:414 +#: templates/js/translated/stock.js:1042 users/models.py:401 msgid "Add" msgstr "" @@ -13327,180 +13424,180 @@ msgstr "" msgid "Delete Stock" msgstr "" -#: templates/js/translated/stock.js:1143 +#: templates/js/translated/stock.js:1146 msgid "Quantity cannot be adjusted for serialized stock" msgstr "" -#: templates/js/translated/stock.js:1143 +#: templates/js/translated/stock.js:1146 msgid "Specify stock quantity" msgstr "" -#: templates/js/translated/stock.js:1177 templates/js/translated/stock.js:3299 +#: templates/js/translated/stock.js:1180 templates/js/translated/stock.js:3299 msgid "Select Stock Items" msgstr "" -#: templates/js/translated/stock.js:1178 +#: templates/js/translated/stock.js:1181 msgid "Select at least one available stock item" msgstr "" -#: templates/js/translated/stock.js:1224 +#: templates/js/translated/stock.js:1227 msgid "Confirm stock adjustment" msgstr "" -#: templates/js/translated/stock.js:1360 +#: templates/js/translated/stock.js:1363 msgid "PASS" msgstr "" -#: templates/js/translated/stock.js:1362 +#: templates/js/translated/stock.js:1365 msgid "FAIL" msgstr "" -#: templates/js/translated/stock.js:1367 +#: templates/js/translated/stock.js:1370 msgid "NO RESULT" msgstr "" -#: templates/js/translated/stock.js:1447 +#: templates/js/translated/stock.js:1450 msgid "Pass test" msgstr "" -#: templates/js/translated/stock.js:1450 +#: templates/js/translated/stock.js:1453 msgid "Add test result" msgstr "" -#: templates/js/translated/stock.js:1473 +#: templates/js/translated/stock.js:1476 msgid "No test results found" msgstr "" -#: templates/js/translated/stock.js:1537 +#: templates/js/translated/stock.js:1540 msgid "Test Date" msgstr "" -#: templates/js/translated/stock.js:1550 +#: templates/js/translated/stock.js:1553 msgid "Test started" msgstr "" -#: templates/js/translated/stock.js:1559 +#: templates/js/translated/stock.js:1562 msgid "Test finished" msgstr "" -#: templates/js/translated/stock.js:1713 +#: templates/js/translated/stock.js:1716 msgid "Edit Test Result" msgstr "" -#: templates/js/translated/stock.js:1733 +#: templates/js/translated/stock.js:1736 msgid "Delete Test Result" msgstr "" -#: templates/js/translated/stock.js:1765 +#: templates/js/translated/stock.js:1768 msgid "In production" msgstr "" -#: templates/js/translated/stock.js:1769 +#: templates/js/translated/stock.js:1772 msgid "Installed in Stock Item" msgstr "" -#: templates/js/translated/stock.js:1777 +#: templates/js/translated/stock.js:1780 msgid "Assigned to Sales Order" msgstr "" -#: templates/js/translated/stock.js:1783 +#: templates/js/translated/stock.js:1786 msgid "No stock location set" msgstr "" -#: templates/js/translated/stock.js:1839 +#: templates/js/translated/stock.js:1842 msgid "Change stock status" msgstr "" -#: templates/js/translated/stock.js:1848 +#: templates/js/translated/stock.js:1851 msgid "Merge stock" msgstr "" -#: templates/js/translated/stock.js:1897 +#: templates/js/translated/stock.js:1900 msgid "Delete stock" msgstr "" -#: templates/js/translated/stock.js:1952 +#: templates/js/translated/stock.js:1953 msgid "stock items" msgstr "" -#: templates/js/translated/stock.js:1957 +#: templates/js/translated/stock.js:1958 msgid "Scan to location" msgstr "" -#: templates/js/translated/stock.js:1968 +#: templates/js/translated/stock.js:1969 msgid "Stock Actions" msgstr "" -#: templates/js/translated/stock.js:2012 +#: templates/js/translated/stock.js:2013 msgid "Load installed items" msgstr "" -#: templates/js/translated/stock.js:2090 +#: templates/js/translated/stock.js:2091 msgid "Stock item is in production" msgstr "" -#: templates/js/translated/stock.js:2095 +#: templates/js/translated/stock.js:2096 msgid "Stock item assigned to sales order" msgstr "" -#: templates/js/translated/stock.js:2098 +#: templates/js/translated/stock.js:2099 msgid "Stock item assigned to customer" msgstr "" -#: templates/js/translated/stock.js:2101 +#: templates/js/translated/stock.js:2102 msgid "Serialized stock item has been allocated" msgstr "" -#: templates/js/translated/stock.js:2103 +#: templates/js/translated/stock.js:2104 msgid "Stock item has been fully allocated" msgstr "" -#: templates/js/translated/stock.js:2105 +#: templates/js/translated/stock.js:2106 msgid "Stock item has been partially allocated" msgstr "" -#: templates/js/translated/stock.js:2108 +#: templates/js/translated/stock.js:2109 msgid "Stock item has been installed in another item" msgstr "" -#: templates/js/translated/stock.js:2110 +#: templates/js/translated/stock.js:2111 msgid "Stock item has been consumed by a build order" msgstr "" -#: templates/js/translated/stock.js:2114 +#: templates/js/translated/stock.js:2115 msgid "Stock item has expired" msgstr "" -#: templates/js/translated/stock.js:2116 +#: templates/js/translated/stock.js:2117 msgid "Stock item will expire soon" msgstr "" -#: templates/js/translated/stock.js:2121 +#: templates/js/translated/stock.js:2122 msgid "Stock item has been rejected" msgstr "" -#: templates/js/translated/stock.js:2123 +#: templates/js/translated/stock.js:2124 msgid "Stock item is lost" msgstr "" -#: templates/js/translated/stock.js:2125 +#: templates/js/translated/stock.js:2126 msgid "Stock item is destroyed" msgstr "" -#: templates/js/translated/stock.js:2129 +#: templates/js/translated/stock.js:2130 #: templates/js/translated/table_filters.js:350 msgid "Depleted" msgstr "" -#: templates/js/translated/stock.js:2294 +#: templates/js/translated/stock.js:2295 msgid "Supplier part not specified" msgstr "" -#: templates/js/translated/stock.js:2341 +#: templates/js/translated/stock.js:2342 msgid "Stock Value" msgstr "" -#: templates/js/translated/stock.js:2469 +#: templates/js/translated/stock.js:2470 msgid "No stock items matching query" msgstr "" @@ -13973,6 +14070,22 @@ msgstr "" msgid "Show all notifications and history" msgstr "" +#: templates/pui_banner.html:9 +msgid "Platform UI - the new UI for InvenTree - provides more modern administration options." +msgstr "" + +#: templates/pui_banner.html:12 +msgid "Platform UI - the new UI for InvenTree - is ready to be tested." +msgstr "" + +#: templates/pui_banner.html:15 +msgid "Try it out now" +msgstr "" + +#: templates/pui_banner.html:15 +msgid "here" +msgstr "" + #: templates/qr_code.html:11 msgid "QR data not provided" msgstr "" @@ -14194,35 +14307,34 @@ msgstr "" msgid "Revoked" msgstr "" -#: users/models.py:397 +#: users/models.py:384 msgid "Permission set" msgstr "" -#: users/models.py:406 +#: users/models.py:393 msgid "Group" msgstr "" -#: users/models.py:410 +#: users/models.py:397 msgid "View" msgstr "" -#: users/models.py:410 +#: users/models.py:397 msgid "Permission to view items" msgstr "" -#: users/models.py:414 +#: users/models.py:401 msgid "Permission to add items" msgstr "" -#: users/models.py:418 +#: users/models.py:405 msgid "Change" msgstr "" -#: users/models.py:420 +#: users/models.py:407 msgid "Permissions to edit items" msgstr "" -#: users/models.py:426 +#: users/models.py:413 msgid "Permission to delete items" msgstr "" - diff --git a/src/backend/InvenTree/locale/en/LC_MESSAGES/django.po b/src/backend/InvenTree/locale/en/LC_MESSAGES/django.po index f40d3d6c40..be983506d7 100644 --- a/src/backend/InvenTree/locale/en/LC_MESSAGES/django.po +++ b/src/backend/InvenTree/locale/en/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-04-20 13:19+0000\n" +"POT-Creation-Date: 2024-05-31 07:08+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME
{% trans "Part" %} | +{% trans "Serial Number" %} | +{% trans "Reference" %} | +{% trans "Note" %} | +
---|---|---|---|
+
+
+
+
+ {{ line.item.part.full_name }}
+
+ |
+ {{ line.item.serial }} | +{{ line.reference }} | +{{ line.notes }} | +
{% trans "Extra Line Items" %} | |||
+ | + | {{ line.reference }} | +{{ line.notes }} | +
{% trans "Part" %} | -{% trans "Serial Number" %} | -{% trans "Reference" %} | -{% trans "Note" %} | -
---|---|---|---|
-
-
-
-
- {{ line.item.part.full_name }}
-
- |
- {{ line.item.serial }} | -{{ line.reference }} | -{{ line.notes }} | -
{% trans "Extra Line Items" %} | |||
- | - | {{ line.reference }} | -{{ line.notes }} | -
{{ part.description }}
+{{ stock_item.location }}
+Stock Item ID: {{ stock_item.pk }}
+{% trans "Test" %} | +{% trans "Result" %} | +{% trans "Value" %} | +{% trans "User" %} | +{% trans "Date" %} | +|||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
+ {% if test_template %} + {% render_html_text test_template.test_name bold=test_template.required %} + {% elif test_result %} + {% render_html_text test_result.test italic=True %} + {% else %} + + {{ key }} + {% endif %} + | + {% if test_result %} + {% if test_result.result %} +{% trans "Pass" %} | + {% else %} +{% trans "Fail" %} | + {% endif %} +{{ test_result.value }} | +{{ test_result.user.username }} | +{% format_date test_result.date.date %} | + {% else %} + {% if test_template.required %} +{% trans "No result (required)" %} | + {% else %} +{% trans "No result" %} | + {% endif %} + {% endif %} +
+ + {{ sub_item.part.full_name }} + | ++ {% if sub_item.serialized %} + {% trans "Serial" %}: {{ sub_item.serial }} + {% else %} + {% trans "Quantity" %}: {% decimal sub_item.quantity %} + {% endif %} + | +
{{ part.description }}
-{{ stock_item.location }}
-Stock Item ID: {{ stock_item.pk }}
-{% trans "Test" %} | -{% trans "Result" %} | -{% trans "Value" %} | -{% trans "User" %} | -{% trans "Date" %} | -|||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
- {% if test_template %} - {% render_html_text test_template.test_name bold=test_template.required %} - {% elif test_result %} - {% render_html_text test_result.test italic=True %} - {% else %} - - {{ key }} - {% endif %} - | - {% if test_result %} - {% if test_result.result %} -{% trans "Pass" %} | - {% else %} -{% trans "Fail" %} | - {% endif %} -{{ test_result.value }} | -{{ test_result.user.username }} | -{% format_date test_result.date.date %} | - {% else %} - {% if test_template.required %} -{% trans "No result (required)" %} | - {% else %} -{% trans "No result" %} | - {% endif %} - {% endif %} -
- - {{ sub_item.part.full_name }} - | -- {% if sub_item.serialized %} - {% trans "Serial" %}: {{ sub_item.serial }} - {% else %} - {% trans "Quantity" %}: {% decimal sub_item.quantity %} - {% endif %} - | -